繁体   English   中英

为什么在 c# 中可以为空的 int 作为字符串不能为空?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM