C# 中 null-condition operator ?. 的困惑

(!(tb?.Rows.Count > 0)) return null;会被编译成if (tb == null || tb.Rows.Count <= 0 return null;
(tb?.Rows.Count <= 0) return null;会被编译成if (tb != null || tb.Rows.Count <= 0 return null;

这就意味着if (!(A > B))if (A <= B)不一样了,为啥C#会有如此令人困惑的语法?

阅读 2.6k
1 个回答

你例子中if (!(A > B))跟if (A <= B)其中A是不一样的
应该是if (!(A > B)) 跟if (!A <= B) 是一样的
tb?.Rows.Count本身就有判断 if(tb!=null) tb=tb.Rows.Count;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进