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

Noa*_*oah 2 c# class-design operator-overloading

背景:我有一个用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 */
};
Run Code Online (Sandbox Code Playgroud)

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

if (sp != null) {...}
Run Code Online (Sandbox Code Playgroud)

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

PS:除了习惯之外,我没有真正的理由想要写(sp).

Yes*_*ke. 17

您可以使用默认的属性装饰器在C#中执行此操作,但您不应该这样做.尝试编写C#就好像是一种鸭式语言会导致各种各样的认知失调.

作为一个经验法则,拥抱你正在使用的语言的白话而不是试图将它塞进一个它从未想过的更熟悉的形状是一个好主意.