以下强制转换/转换之间有什么区别。
string a = 5;
int b = (int)a;
int c = a as int;
int d = Convert.ToInt32(a);
只是想知道这些不同的方法以及在哪里使用它们。
(int)a
只是Int32类型的强制转换,并且要求a
是数值(浮点、长等)
Convert.ToInt32(a)
将正确地将任何数据类型转换为int(包括string
s),而不是将其强制转换为另一种类型。
a as int
与(int)a
是相同的隐式转换(强制转换),因此它们做的事情大致相同。
注意事项:
as
只能与可为null/引用类型一起使用,int
只能与不可为null的类型一起使用。将int?
与as
一起使用(int)long
返回异常,long as int?
返回null