相关疑难解决方法(0)

可空类型如何使用比较运算符处理空值?

Nullable<T>当比较的一边为空时,有没有人具体了解C#如何处理与类型的比较?

正如我通过试验编译器所理解的那样,似乎比较总是返回false,但我找不到任何文档来支持它.这是该语言的真正特征(因此我可以依赖它),或者这是一个在未来版本中可能会改变的实现细节?

换句话说,下面的方法是否真的意味着y.HasValue,并且你能指出一些证明它确实存在的文档吗?

    public bool foo(int x, int? y)
    {
        return x < y;
    }
Run Code Online (Sandbox Code Playgroud)

.net c#

23
推荐指数
2
解决办法
4740
查看次数

在条件语句中使用 null 条件运算符时,如何处理 null 情况?

假设我这里有以下代码:

static void Main(string[] args)
{
   StringBuilder[] s = new StringBuilder[3];
   if (s[0]?.Length > 0)
   {
       Console.WriteLine("hi");
   }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是 if 语句中的表达式必须是布尔表达式。布尔表达式(我的理解可能是错的)是计算结果为 true 或 false 的表达式。

在这种情况下,null 条件运算符将返回 null,因为引用类型变量数组中元素的默认值为 null。因此,这个 if 语句等价于

bool? x = null;
if (x)
{ 
   // do cool things here */ 
}
Run Code Online (Sandbox Code Playgroud)

但这给了我一个语法错误:无法将 null 转换为 bool。

那么,上面的 StringBuilder 示例是如何工作的呢?我的理解是,上述代码的更好方法应该是将其与空合并运算符结合起来,如下所示:

if (s[0]?.Length > 0 ?? false) {}
Run Code Online (Sandbox Code Playgroud)

谢谢大家:)

.net c#

2
推荐指数
1
解决办法
267
查看次数

标签 统计

.net ×2

c# ×2