“奇怪的”C#语法

时间:2011-09-08 11:48:50

标签: c# syntax

我刚从Code Project下载的项目中看到了这一点:

base.DialogResult = this.Result != null;

我不认为自己是C#的新手,但这个对我来说是新的。谁能告诉我这句话发生了什么?

编辑很棒的答案,谢谢。我以前从未使用过它。

5 个答案:

答案 0 :(得分:9)

如果你添加parens,它更容易阅读(和理解)。逻辑比较运算符!=位于赋值运算符=之前:

base.DialogResult = (this.Result != null);

同样的陈述,更加冗长:

if (this.Result != null)
    base.DialogResult = true;
else
    base.DialogResult = false;

答案 1 :(得分:4)

this.Result != null评估为布尔值,truefalse

评估结果在基类的DialogResult成员中设置。

一点也不奇怪,这只是一项任务。

答案 2 :(得分:3)

!=(不等于)运算符优先于=(赋值)运算符。

答案 3 :(得分:2)

这很简单,基本上它会分配表达式的结果

this.Result != null

base.DialogResult

表达式使用in-equality运算符,因此返回true或false,具体取决于this.Result是否为null

答案 4 :(得分:0)

这意味着:

bool g = (this.Result != null);
this.DialogResult = g;