C#中判断某类型是否可以进行隐式类型转换
C#中判断某类型是否可以进行隐式类型转换
发布时间:2016-12-28 来源:查字典编辑
摘要:C#中,有些类型是可以隐式转换的,我整理了这些可以隐式转换的类型,供大家参考复制代码代码如下:staticprivateboolCanCon...

C#中,有些类型是可以隐式转换的,我整理了这些可以隐式转换的类型,供大家参考

复制代码 代码如下:

static private bool CanConvert(Type from, Type to)

{

if (from.IsPrimitive && to.IsPrimitive)

{

TypeCode typeCodeFrom = Type.GetTypeCode(from);

TypeCode typeCodeTo = Type.GetTypeCode(to);

if (typeCodeFrom == typeCodeTo)

return true;

if (typeCodeFrom == TypeCode.Char)

switch (typeCodeTo)

{

case TypeCode.UInt16: return true;

case TypeCode.UInt32: return true;

case TypeCode.Int32: return true;

case TypeCode.UInt64: return true;

case TypeCode.Int64: return true;

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from Byte follow.

if (typeCodeFrom == TypeCode.Byte)

switch (typeCodeTo)

{

case TypeCode.Char: return true;

case TypeCode.UInt16: return true;

case TypeCode.Int16: return true;

case TypeCode.UInt32: return true;

case TypeCode.Int32: return true;

case TypeCode.UInt64: return true;

case TypeCode.Int64: return true;

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from SByte follow.

if (typeCodeFrom == TypeCode.SByte)

switch (typeCodeTo)

{

case TypeCode.Int16: return true;

case TypeCode.Int32: return true;

case TypeCode.Int64: return true;

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from UInt16 follow.

if (typeCodeFrom == TypeCode.UInt16)

switch (typeCodeTo)

{

case TypeCode.UInt32: return true;

case TypeCode.Int32: return true;

case TypeCode.UInt64: return true;

case TypeCode.Int64: return true;

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from Int16 follow.

if (typeCodeFrom == TypeCode.Int16)

switch (typeCodeTo)

{

case TypeCode.Int32: return true;

case TypeCode.Int64: return true;

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from UInt32 follow.

if (typeCodeFrom == TypeCode.UInt32)

switch (typeCodeTo)

{

case TypeCode.UInt64: return true;

case TypeCode.Int64: return true;

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from Int32 follow.

if (typeCodeFrom == TypeCode.Int32)

switch (typeCodeTo)

{

case TypeCode.Int64: return true;

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from UInt64 follow.

if (typeCodeFrom == TypeCode.UInt64)

switch (typeCodeTo)

{

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from Int64 follow.

if (typeCodeFrom == TypeCode.Int64)

switch (typeCodeTo)

{

case TypeCode.Single: return true;

case TypeCode.Double: return true;

default: return false;

}

// Possible conversions from Single follow.

if (typeCodeFrom == TypeCode.Single)

switch (typeCodeTo)

{

case TypeCode.Double: return true;

default: return false;

}

}

return false;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类