一道看似复杂但是简单的c#面试题

public void Main()
{
    object a = null;
    object b = new object();
    if (true ^ (a ?? b).Equals(a))
    {
        Console.WriteLine("true");
    }
    else
    {
        Console.WriteLine("false");
    }
}

输出是什么?

首先考运算优先级,括号内的最高,a ?? b,但是这个是什么意思呢?

其实他是双目运算符?:,即a==b?a:b,返回b,同样a??a呢,返回a

然后是.运算符,b.Equals(a) 返回 false

最后true ^false 这是异或,也就是有且仅有一个true时,结果为true,其他都为false

所以最后为true

原文地址:https://www.cnblogs.com/sung/p/3030738.html