(?,:,等等) - 通过实例学习术语
-
22-09-2019 - |
题
当你是一个孩子,你有没有问你的父母是怎么写的东西,他们告诉你去看看它?我的第一印象总是:“好,如果可以看看它,我不会需要帮助的拼写错误”。 (是啊,我知道语音)
...无论如何,我只是看一些代码,我发现一个例子如下:
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.Checked
是true
,然后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");
不隶属于 StackOverflow