通过示例学习 - 术语(?,:等)

时间:2009-10-19 19:10:31

标签: c# operators terminology ternary-operator

当你还是个孩子的时候,你有没有问过你的父母如何拼写一些东西,他们告诉你去查找它?我的第一印象总是,“好吧,如果可以查找它我不需要帮助拼写它”。 (是的,我知道语音学)

...无论如何,我只是在查看一些代码,我发现了一个例子:

 txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;

我可以弄清楚这个操作是做什么的,但显然,我不能谷歌?或者:我在搜索“c#运算符”,LINQ,Lambda表达式等时无法找到它们。所以我不得不问这个愚蠢的问题所以我可以开始阅读它。

这些运营商是什么?

6 个答案:

答案 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.Checkedtrue,那么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");