在c#中,值类型不能具有null值,但是您可以通过添加问号来启用它。

例如

int intCannotBeNull = 1;
int? intCanBeNull = null;


此外,在C#中,许多值类型都有static成员,因此您可以执行以下操作:

string strValue = "123";
intCannotBeNull = int.Parse(strValue);


但是,您不能执行以下任一操作:

intCanBeNull = int?.Parse(strValue);
intCanBeNull = (int?).Parse(strValue);


C#感到困惑。是否有一种有效的语法表示strValue可以是null或有效的整数值,并且可以进行赋值?

我知道有一些简单的解决方法,例如:

intCanBeNull = (strValue == null) ? null : (int?)int.Parse(strValue);


和同一件事的其他变体,但这只是一团糟...

最佳答案

int?Nullable<int>的语法糖。您正在询问Nullable<int>.Parse。没有这种方法。那就是你的困惑所在。

关于c# - 可为null的类型的静态成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27359761/

10-17 02:13