c# - 为什么在 C# 中不允许这样做?

标签 c#

<分区>

如果条件 param.days 是一个字符串,我有以下内容。

if (param.days != null)

这很好用,但是如果我说

If (param.days)

那么它在运行时无法正确评估。这两个语句在 C# 中并不相同。
它确实表示该值为 null,但随后 C# 尝试将其转换为不可为 null 的 bool。 为什么 C# 设计者选择这样做? 这样的语句在 C++ 中有效,但为什么在 C# 中不被认为有效?

最佳答案

Such a statement is valid in C++, but why is this not considered valid in C#

因为 C# 采用不同的语言规则。它不假设每个数字/引用都可以通过检查它是零还是非零,空还是非空来视为 bool 值。如果你想测试某物是否为空:测试它是否为空

注意:如果days实际上是一个 T? (又名 Nullable<T> ),然后您可以检查:

if(param.days.HasValue)

然后与 if(param.days != null) 相同

或者,如果您的类型可以明智地被视为 bool 值,那么您可以覆盖一些运算符来告诉编译器这一点。

关于c# - 为什么在 C# 中不允许这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922065/

相关文章:

c# - ASP.Net 实时流式传输 IP 摄像机视频和音频

c# - 在 C# 5 中将 WPF 事件处理程序声明为 'async' 的意义

c# - 数据库之间的外键,复制表

c# - 自定义列表框排序

c# - 使用 OleDbConnection 连接

c# - 覆盖对象的虚拟方法

c# - Azure TimerTrigger 无法在 .NET 7 独立工作进程中工作

c# - 高维数据聚类

c# - "Deleted row information cannot be accessed through the row"试图从我的数据表中删除未使用的行

c# - 在某些字段上查询时,使用 NEST 搜索不会返回结果