C# 为什么为空<;int>;不';你没有会员吗?

C# 为什么为空<;int>;不';你没有会员吗?,c#,int,C#,Int,为什么下面的行可以工作: int.Parse("SomeIntegerValue"); 但以下情况并非如此: int?.Parse("SomeIntegerValue"); 有一秒钟,我认为解析器无法将int?作为类型进行解析,因此我将其更改为: (int?).Parse("SomeIntegerValue"); 但这也不行。更详细的形式也不例外: Nullable<int>.Parse("SomeIntegerValue"); Nullable.Parse(“SomeInt

为什么下面的行可以工作:

int.Parse("SomeIntegerValue");
但以下情况并非如此:

int?.Parse("SomeIntegerValue");
有一秒钟,我认为解析器无法将
int?
作为类型进行解析,因此我将其更改为:

(int?).Parse("SomeIntegerValue");
但这也不行。更详细的形式也不例外:

Nullable<int>.Parse("SomeIntegerValue");
Nullable.Parse(“SomeIntegerValue”);

(Nullable).Parse(“SomeIntegerValue”);
最后一个版本告诉我,
Nullable
是一个类型,但像变量一样使用,但即使是简单的
int
也是一个类型,对吗?

是一个泛型结构,其中
T
可以是任何值类型,用户定义或其他

如果它有一个
Parse()
方法,该方法只适用于十几个内置数据类型,而对其他所有数据类型都没有用处,这是没有意义的。

是一个通用结构,其中
T
可以是任何值类型,用户定义或其他


如果它有一个只适用于十几个内置数据类型的
Parse()
方法,对其他所有数据类型都没有任何意义。

仅仅是因为
Nullable
没有
Parse()
方法。

仅仅是因为
Nullable
没有
Parse()
方法。

向我展示
Parse
方法:你到底想做什么?将可能包含int的字符串放入int中,但允许
为“null”
或空字符串?至于最后一点,尝试
int.ToString()
是行不通的,因为您使用了类似变量的类型,对吗?@doctorlove:Correct。我希望
int?
能够
解析
int
可以解析的所有内容,加上空字符串。我只是忘记了一个事实,
int?
不是从
int
派生出来的。告诉我
Parse
方法:你到底想做什么?将可能包含int的字符串放入int中,但允许
为“null”
或空字符串?至于最后一点,尝试
int.ToString()
是行不通的,因为您使用了类似变量的类型,对吗?@doctorlove:Correct。我希望
int?
能够
解析
int
可以解析的所有内容,加上空字符串。我忘了
int?
不是从
int
派生出来的。。。为什么我没想到那件简单的事
Nullable
对您来说。理论上,它可以在引擎盖下使用,但这似乎是一个不必要的肮脏攻击。简单地使用一个高性能的静态方法是没有好处的。你的观点是合理的,但并不总是正确的。例如,没有对签名中的类型
T
设置任何限制,但如果您尝试将其与没有无参数构造函数的类型一起使用,则实现将抛出
MissingMethodException
。@280Z28在某种程度上我同意,然而,
Activator.CreateInstance
的目的是调用构造函数,对于某些输入,没有办法让它失败。
Nullable
的目的与解析无关,因此使用只适用于非常小的数据类型集的
Parse()
方法是没有意义的。不过,我已经改写了我的答案,以便更清楚地表达我的意图。。。为什么我没想到那件简单的事
Nullable
对您来说。理论上,它可以在引擎盖下使用,但这似乎是一个不必要的肮脏攻击。简单地使用一个高性能的静态方法是没有好处的。你的观点是合理的,但并不总是正确的。例如,没有对签名中的类型
T
设置任何限制,但如果您尝试将其与没有无参数构造函数的类型一起使用,则实现将抛出
MissingMethodException
。@280Z28在某种程度上我同意,然而,
Activator.CreateInstance
的目的是调用构造函数,对于某些输入,没有办法让它失败。
Nullable
的目的与解析无关,因此使用只适用于非常小的数据类型集的
Parse()
方法是没有意义的。然而,我已经改写了我的答案,以便更清楚地表达我的意图。
(Nullable<int>).Parse("SomeIntegerValue");