c# - 如何编写 C# 类来测试 0 和 null

标签 c# operator-overloading class-design

背景:我有一个用 C# (2005) 编写的自定义类,其代码类似于以下内容:

public class Savepoint
{
  public int iOffset;                 /* Starting offset in main journal */
  public u32 nOrig;                   /* Original number of pages in file */
  public u32 iSubRec;                 /* Index of first record in sub-journal */
};

在使用Savepoint sp; 声明变量后,我可以测试是否已使用类似于以下的代码实例化:

if (sp != null) {...}

问题:是否有可能以某种方式重载类运算符,以便我也可以使用以下语法:if (sp) {...}if (sp != 0) {...}

PS:除了习惯的力量,我没有真正好的理由想写 if (sp)。

最佳答案

您可以使用默认属性装饰器在 C# 中执行此操作,但您不应该这样做。尝试将 C# 编写成鸭子类型的语言会导致各种认知失调。

根据经验,接受您正在使用的语言的方言是个好主意,而不是试图将它塞进一个更熟悉的形状,它从来没有打算拥有。

关于c# - 如何编写 C# 类来测试 0 和 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/595943/

相关文章:

c# - 将 TSQL 查询转换为 LINQ

c++ - 多线程中对象的行为

python - 为什么 __init__() 总是在 __new__() 之后调用?

java - Java 中良好的面向对象设计示例

c++ - 是什么让 Scala 的运算符重载 "good",但 C+ +'s "不好?

c# - c# 类应该生成自身的实例吗?

c# - 如何在 Xamarin.Forms 中访问 TableView 的子级

c# - ALL 或 null 与枚举?

c# - 在 C# 中保存网页及其所有内容

C++ 重载 > 对于priority_queue(最小堆): yields "invalid operands to binary expression (' const Node' and 'const Node' )"on push() for heap