在大部分情况下,当需要对FCL提供的类型进行转型时,都应该使用FCL提供的转型方法。
1、使用类型的转换运算符。
2、使用类型内置的Parse、TryParse、或者如ToString、ToDouble和ToDateTime等方法。
3、使用帮助类提供的方法。
4、使用CLR支持的转型。
下面分别对这些方法进行说明。
1、使用类型的转换运算符。
使用类型的转换运算符,其实就是使用类型内部的一个方法。转换运算符分为两类:隐式转换和显示转换。基元类型普遍提供了转换运算符,如:
int i=0;
float j=0;
j=i;//隐式转换
i=(int)j;//显示转换
注意:所谓“基元类型”,是指编译器直接支持的数据类型,即直接映射到FCL中的类型。包括sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、bool、decimal、object、string。
2、使用类型内置的Parse、TryParse、或者如ToString、ToDouble和ToDateTime等方法。
在FCl中,如果某个类型经常需要进行转型操作,类型自身则会带有一些转型方法。比如从string转型为int,因为经常发生,所以int本身就提供了Parse和TryParse方法。
3、使用帮助类提供的方法。
可以使用如System.Convert类、System.BitConverter类来进行类型的转换。
System.Convert提供了一个将基元类型转换为其他基元类型的方法,如ToChar、ToBoolean方法等。
值得一提的是,System.Convert还支持将任何自定义类型转换为任意基元类型,只要自定义类型继承
了IConvertible接口就可以。代码如下:
class Ip : IConvertible
{
public bool ToBoolean(IFormatProvider provider)
{
throw new InvalidCastException("Ip-to-Boolean conversion is not supported");
}
public string ToString(IFormatProvider provider)
{
return value.ToString();
}
}
继承IConvertible接口必须同时实现其他转型方法,如ToBoolean。
System.BitConverter类提供了基元类型与字节数组之间相互转换的方法。
4、使用CLR支持的转型。
CLR支持的转型,即上溯转型和下溯转型。实际上就是基类和子类之间的相互转换。
Animal animal;
Dog dog=new Dog();
animal=dog; //隐式转换
//dog=animal; //编译不通过
dog=(dog)animal; //显示转换