C#声明(选择?)

问题描述:

我忘了C#语句的语法,我甚至不知道名字....C#声明(选择?)

可以说你有一个布尔值,把它连接,我想设置一些文字取决于连接状态。我知道有一个简单的“一个班轮”语句,但我忘了语法,我不知道声明的类型的名称,这样我就可以谷歌搜索它。

这里是一些接近我所期待的。语法如下所示:

string title = (connected : "[Not Connected]", "[Connected]"); 

谢谢!

+0

在C#中搜索三元运算符。它是OOPS中3个操作数的唯一操作员。 – 2012-08-13 12:55:28

+0

[使用此运算符的好处](http://stackoverflow.com/questions/3312786/benefits-of-using-the-conditional-ternary-operator) – 2012-08-13 13:22:52

您正在寻找conditional operator

string title = connected ? "[Connected]" : "[Not Connected]"; 
+0

啊!这是它的感谢! – 2012-08-13 12:48:41

+0

这是一个非常好的“紧凑”声明。我喜欢它,当我有机会使用它。 :) – 2012-08-13 12:51:38

它被称为Conditional/ternary operator

string title = connected ? "[Not Connected]": "[Connected]"; 

注意真实情况是第一位的,以便在你的榜样它实际上应该是

string title = connected ? "[Connected]": "[Not Connected]"; 
+0

条件运算符或三元运算符? – 2012-08-13 12:49:31

+0

@TackyTacky Ternary仅仅意味着“3个操作数”,它是一个有条件的操作符。 – 2012-08-13 12:50:02

+0

两者。条件运算符是一个三元运算符,因为它需要三个操作数。 – 2012-08-13 12:50:06

I th墨你的意思是conditional operator

// Sample changed from original code for sanity 
string title = connected ? "[Connected]" : "[Not connected]"; 

它的正式名称是有条件的经营者,但有时您会在这里人们将其称为“三元运算符”。这只是意味着它有三个操作数(与一元运算符和二元运算) - 它并没有描述什么可言的,IMO应该避免。选用合适的名称,描述了它是:评估条件然后评估根据该另一种表达。在C#4规范的有关行为等细节

见7.14节

+0

'连接? “[未连接]”...“?你确定? – 2012-08-13 12:48:43

+0

@Serge:我刚刚在问题中的代码。编辑。 – 2012-08-13 12:51:07

+0

谢谢你的详细解答! – 2012-08-13 12:52:27

这听起来像你在谈论的ternary- conditional operator

string title = condition ? "on true" : "on false"; 

注意这不是“三元运算符”很多人可能会认为,三元只是意味着有3个操作数,可以read more on Wikipedia

在计算机科学中,三元运营商(有时被误称为叔运算符)是一个操作符有三个参数

+1

下面是编译器真正创建的代码,它接受三个参数,或者它是否将语句转换为等价的:if(connected)text =“connected”else text =“not connected”;似乎条件运算符只是语法上的便利,并不真正代表底层代码。 – 2012-08-13 12:58:32

+1

@TackyTacky最好的方法是寻找自己,编译一个简单的应用程序,并在ILDASM中查看它是如何构建的。有关运营商的更多信息,请阅读C#语言规范14.13。但是,是的,你是对的,这是一个便利的运营商。 – 2012-08-13 13:00:53

输入conditional operator

var title = connected ? "Connected" : "Not Connected" 

title= (connected == true) ? "[Connected]" : "[Not Connected]"; 

title= (connected) ? "[Connected]" : "[Not Connected]"; 
+1

它可以简化为'title = connected? “[已连接]”:“[未连接]”;' – 2012-08-13 12:54:11