一道看似复杂但是简单的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