Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#比较运算的奇怪结果_C#_Asp.net - Fatal编程技术网

c#比较运算的奇怪结果

c#比较运算的奇怪结果,c#,asp.net,C#,Asp.net,我的c#代码(asp.net代码隐藏)有一个奇怪的行为。我在这里发布了一个监视窗口的屏幕截图: 我有一个对象用户为null(如您所见),compare:user==null返回false。我不明白为什么 这里有人能解释为什么会发生这种情况吗?你可以很容易地编写自己的类,从而得出这样的结果: public class Evil { public static bool operator ==(Evil lhs, Evil rhs) { return false;

我的c#代码(asp.net代码隐藏)有一个奇怪的行为。我在这里发布了一个监视窗口的屏幕截图:

我有一个对象用户为null(如您所见),compare:user==null返回false。我不明白为什么


这里有人能解释为什么会发生这种情况吗?

你可以很容易地编写自己的类,从而得出这样的结果:

public class Evil
{
    public static bool operator ==(Evil lhs, Evil rhs)
    {
        return false;
    }

    public static bool operator !=(Evil lhs, Evil rhs)
    {
        return false;
    }
}
我们只是猜测,目前。。。但这就是症状的原因


(我刚刚尝试重写ToString,但无法获得所需的输出。)

您可以在
user.ToString()上添加一个手表吗?另外,您是否有权访问所声明类型的
user
的代码?是否尝试过null==user?是否在user上重载了==运算符?我认为@StriplingWarrior可能找到了答案-user不是null,但是ToString函数(出于某种原因)在给定user的当前值时返回null。你是一位心理学家吗?你是一位心理学家,在面对悖论时测试具有确定性思维的人的反应吗?:)@丹尼尔:这是一个可以显示给定输出的示例。我认为
returnnull
更可能出现在
ToString()
实现中<代码>返回“null”
将导致在调试器中显示引号。这只是猜测为什么这样的比较会在一种情况下返回null,但在null检查中返回false。我在VS中使用Wathc已经很久了,但是字符串将是
“null”
?@Vash:我认为
typeof((邪恶的)null)
不是有效的代码;您需要提供编译时类型引用,而不是对象实例。也许您正在考虑
((邪恶)null).GetType()
?(这将抛出一个
NullReferenceException
当然)