当你还是个孩子的时候,你有没有问过你的父母如何拼写一些东西,他们告诉你去查找它?我的第一印象总是,“好吧,如果可以查找它我不需要帮助拼写它”。 (是的,我知道语音学)
...无论如何,我只是在查看一些代码,我发现了一个例子:
txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;
我可以弄清楚这个操作是做什么的,但显然,我不能谷歌?或者:我在搜索“c#运算符”,LINQ,Lambda表达式等时无法找到它们。所以我不得不问这个愚蠢的问题所以我可以开始阅读它。
这些运营商是什么?
答案 0 :(得分:18)
?:
是conditional operator,最好的方法就是在这里询问!
condition ? first_expression : second_expression;
如果条件为真,则计算第一个表达式并成为结果;如果为false,则计算第二个表达式并成为结果。只评估了两个表达式中的一个。
当整个表达式相对较短时,它对分配的可读性非常有帮助:
string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname
比以下更容易,更快:
string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
name = user.Nickname;
}
答案 1 :(得分:5)
?
是一个内联 - if
语句。这意味着如果checkbox.Checked
为true
,那么CharacterCasing.Upper
将是表达式的值,否则CharacterCasing.Normal
将是。{/ p>
它的工作原理如下:
type value = condition ? trueValue : falseValue;
答案 2 :(得分:3)
这是一个内联if语句。 “?”是if的代码,“:”是else的代码。
答案 3 :(得分:2)
?也被称为ternary operator
答案 4 :(得分:1)
顺便说一下,您可以在维基百科上search for "?:"找到它。
请注意,它有时也称为“三元”运算符,因为它是C语言中唯一的三元(3参数)运算符。
答案 5 :(得分:1)
顺便说一下。 当你正在学习C#时,请查看?? operator它有时候会更好地替代?:。
考虑:
Console.WriteLine(user.LastName ?? "no last name provided");
VS
Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");