当你是一个孩子,你有没有问你的父母是怎么写的东西,他们告诉你去看看它?我的第一印象总是:“好,如果可以看看它,我不会需要帮助的拼写错误”。 (是啊,我知道语音)

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

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

我能弄清楚这是什么操作呢,但很明显,我不能谷歌?或:我不能为“C#操作员”进行搜索时找到他们,LINQ,Lambda表达式等,所以我要问这个傻问题,所以我可以去开始阅读关于它

这些是什么经营者?

有帮助吗?

解决方案

?:条件运算 ,并找出最好的办法是请点击这里!

condition ? first_expression : second_expression;
  

如果条件为真,第一表达式进行求值,并成为结果;如果否,则第二表达式求值并变为结果。只有两个表达式中的一个被不断进行评价。

这对于分配,可读性极有帮助当整个表达是相对短的:

string name = string.IsNullOrEmpty(user.Nickname) ? user.Fullname : user.Nickname

比更容易和更快:

string name = user.Fullname;
if(!string.IsNullOrEmpty(user.Nickname))
{
    name = user.Nickname;
}

其他提示

?是直列if语句。这意味着,如果checkbox.Checkedtrue,然后CharacterCasing.Upper将表达式的值,否则CharacterCasing.Normal会。

它的工作原理是这样的:

type value = condition ? trueValue : falseValue;

这是一个内联的if语句。 “?”是代码中的如果,“:”是用于其他

在?也被称为三元运算

顺便说一句,恰巧你可以搜索“:” 的上维基百科和发现这一点。

请注意,它有时也被称为“所述”三元运算符,因为在它的唯一的三元(3-参数)算子C等的语言。

顺便说一下。 当你正在学习C#退房?操作者有时更好的替代:

考虑:

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

VS

Console.WriteLine(user.LastName != null ? user.LastName : "no last name provided");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top