5

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

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

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

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

这些运算符是什么?

4

6 回答 6

18

?:条件运算符,最好的方法是在这里问!

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;
}
于 2009-10-19T19:12:19.483 回答
5

?是一个内联if语句。这意味着如果checkbox.CheckedtrueCharacterCasing.Upper则将是表达式的值,否则CharacterCasing.Normal将是。

它是这样工作的:

type value = condition ? trueValue : falseValue;

于 2009-10-19T19:12:43.737 回答
3

这是一个内联 if 语句。“?” 是 if 的代码,“:”是 else 的代码。

于 2009-10-19T19:11:47.377 回答
2

这 ?也称为三元运算符

于 2009-10-19T19:15:01.567 回答
1

顺便说一句,您可以在维基百科上搜索“?:”并找到它。

请注意,它有时也称为“三元运算符”,因为它是类 C 语言中唯一的三元(3 参数)运算符。

于 2009-10-19T19:16:55.387 回答
1

顺便提一句。当您学习 C# 时,请查看?? operator有时它是 ?: 的更好选择。

考虑:

Console.WriteLine(user.LastName ?? "no last name provided");

与:

Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");
于 2009-10-19T20:10:51.653 回答