区块链系统之家

关注最新技术动态

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

posted on 2013-04-19 14:55  新技术动态  阅读(283)  评论(5编辑  收藏  举报

导航