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");