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

Ler*_*ins 5 c# terminology operators ternary-operator

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

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

 txtbx.CharacterCasing = (checkbox.Checked) ? CharacterCasing.Upper : CharacterCasing.Normal;
Run Code Online (Sandbox Code Playgroud)

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

这些运营商是什么?

Rex*_*x M 18

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

condition ? first_expression : second_expression;
Run Code Online (Sandbox Code Playgroud)

如果condition为true,则首先计算表达式并成为结果; 如果为false,则计算第二个表达式并成为结果.只评估了两个表达式中的一个.

当整个表达式相对较短时,它对于赋值的可读性非常有用:

string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname
Run Code Online (Sandbox Code Playgroud)

比以下更容易,更快捷:

string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
    name = user.Nickname;
}
Run Code Online (Sandbox Code Playgroud)

  • 哈哈,绝对是StackOverflow是你最好的选择!我想补充一点?:operator是一个'三元'运算符,因为它需要三个操作数(比较二元运算符),并且因为它恰好是许多语言中唯一的三元运算符,所以它有时也被称为***三元运算符. (7认同)
  • 有趣的是,我以为我已经准备好因为问这个问题而受到抨击,"什么?意思是":) (3认同)

Ada*_*son 5

?是内联if声明.这意味着如果checkbox.Checkedtrue,那么CharacterCasing.Upper将是表达式的值,否则CharacterCasing.Normal将是.

它的工作原理如下:

type value = condition ? trueValue : falseValue;