C# 如果对象的实例为空,是否可以修改检查时返回的布尔值?

C# 如果对象的实例为空,是否可以修改检查时返回的布尔值?,c#,null,operator-keyword,C#,Null,Operator Keyword,我想知道在检查对象的实例是否为null时是否可以修改返回的布尔值,例如(我知道这是错误和不完整的,只是想给您一个参考): Main: SuperObject obj = new SuperObject(); if (obj == null) Console.WriteLine("It is null lol!"); public bool destroyed = false; public static bool operator ==(SuperObject A, object B) {

我想知道在检查对象的实例是否为null时是否可以修改返回的布尔值,例如(我知道这是错误和不完整的,只是想给您一个参考):

Main:

SuperObject obj = new SuperObject();

if (obj == null) Console.WriteLine("It is null lol!");
public bool destroyed = false;

public static bool operator ==(SuperObject A, object B)
{
if (A != null && B == null && destroyed == true)
      return true;
}
超级对象:

SuperObject obj = new SuperObject();

if (obj == null) Console.WriteLine("It is null lol!");
public bool destroyed = false;

public static bool operator ==(SuperObject A, object B)
{
if (A != null && B == null && destroyed == true)
      return true;
}
因此,如果表达式(A==null)被选中,并且A不是null,但是A.destromed为TRUE,那么它将返回(A==null)为TRUE的结果

基本上,我希望(A==null)在以下情况下为真:
A实际上为null或A.destromed=null;其他比较的默认值。

我建议改为:

public static bool IsDestroyed(SuperObject a) {
    return (a == null || a.destroyed);
}

您的方式会让新开发人员感到非常困惑。

我建议您这样做:

public static bool IsDestroyed(SuperObject a) {
    return (a == null || a.destroyed);
}

您的方式会让新开发人员感到非常困惑。

从维护/可读性的角度来看,这听起来是个坏主意,即使它是可能的。从维护/可读性的角度来看,这听起来是个坏主意,即使它是可能的。OP的方式会让任何开发人员感到困惑,而不仅仅是新开发人员!谢谢你的推荐。OP的方式会让任何开发者感到困惑,而不仅仅是新手!谢谢你的推荐。