1.Convert()
System..::.Convert 类为支持的转换提供了一整套方法。它提供一种与语言无关的方法来执行转换,而且可用于针对公共语言运行时的所有语言。虽然不同的语言可能会使用不同的技术来转换数据类型,但 Convert 类可确保所有的公共转换都可通过一般格式来使用。该类执行扩大转换、收缩转换以及不相关数据类型的转换。例如,支持从 String 转换为数字类型、从 DateTime 类型转换为 String 类型以及从 String 类型转换为 Boolean 类型。有关可用转换的列表,请参见 Convert 类中的方法列表。Convert 类执行检查过的转换,并在转换不受支持时总会引发异常。异常通常为 OverflowException。有关支持的转换的列表,请参见类型转换表。
可将要转换的值传递给 Convert 类中的某一相应方法,并将返回的值初始化为新变量。例如,下面的代码使用 Convert 类将 String 值转换为 Boolean 值。
2.Parse()和TryParse()
Parse如果字符串的格式无效,则 Parse 会引发一个异常;而 TryParse 不会引发异常,而是返回 false。下面的示例演示了对 Parse 和 TryParse 的成功调用和不成功的调用。
3.as
由于对象是多态的,因此基类类型的变量可以保存派生类型。若要访问派生类型的方法,需要将值强制转换回该派生类型。不过,在这些情况下,如果只尝试进行简单的强制转换,会导致引发 InvalidCastException 的风险。这就是 C# 提供 is 和 as 运算符的原因。您可以使用这两个运算符来测试强制转换是否会成功,而没有引发异常的风险。通常,as 运算符更高效一些,因为如果可以成功进行强制转换,它会实际返回强制转换值。而 is 运算符只返回一个布尔值。因此,如果只想确定对象的类型,而无需对它进行实际强制转换,则可以使用 is 运算符。
as 运算符类似于强制转换操作。但是,如果无法进行转换,则 as 返回 null 而非引发异常。请看下面的表达式
expression as type它等效于以下表达式,但只计算一次 expression。
expression is type ? (type)expression : (type)null
注意,as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用强制转换表达式来执行。
4.强制转化()