C# 中 '(int)a '、'a as int' 和 Convert.ToInt32(a) 之间的区别



以下强制转换/转换之间有什么区别。

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(包括strings),而不是将其强制转换为另一种类型。

a as int(int)a是相同的隐式转换(强制转换),因此它们做的事情大致相同。

注意事项:

  • as只能与可为null/引用类型一起使用,int只能与不可为null的类型一起使用。将int?as一起使用
  • (int)long返回异常,long as int?返回null

最新更新