![](/img/trans.png)
[英]Why int can't be null? How does nullable int (int?) work in C#?
[英]Why can't a nullable int as string be null in c#?
出于某种原因,未知的visualstudio
告诉我此代码无法访问:
int? newInt = null;
string test = newInt.ToString();
if (test == null)
{
//unreachable Code
}
感谢您的帮助! :)
string test = newInt.ToString();
如果将test转换为string
则永远不会为null。 转换时,它将变成空字符串。
int? newInt = null;
string test = newInt.ToString();
if (test == "")
{
Console.WriteLine("Hello World"); //Reaches the code
}
因为:
((int?)null).ToString() == string.Empty
可为null的int的返回值是一个空字符串。 if块中的代码确实在检查一个永远不会存在的空值。 这仅适用于int?
是框架类型,并且ToString()
的行为是已知的并且是不可变的。 如果您对用户定义的值类型尝试了此操作,则无法进行相同的声明。
int? i = null;
var str = i.ToString();
int? j = null;
var str2 = j?.ToString();
在上面的代码中, str 将为空字符串, str2 将为空。 通过使用 ?。 j 上的运算符,我们可以获得空值而不是 str2 的空字符串。 这是一种解决方法,可提供更直观的字符串转换并使 OP 代码可访问。
.ToString()
不允许为空值。
您可以使用:
convert.ToString(newInt)
通过以下方式检查条件:
"string.IsNullOrEmpty(test))"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.