我问的是关于c#,但我认为它在大多数其他语言中都是一样的.
有没有人对表达式和语句有一个很好的定义,有什么区别?
我有一个简单的小代码片段令我感到沮丧:
HashSet<long> groupUIDs = new HashSet<long>();
groupUIDs.Add(uid)? unique++ : dupes++;
Run Code Online (Sandbox Code Playgroud)
在编译时,它会生成错误:
只有赋值,调用,递增,递减和新对象表达式才能用作语句
HashSet.Add 记录为返回bool,因此三元(?)运算符应该工作,这看起来像是一种完全合法的方式来跟踪我添加到哈希集的唯一和重复项的数量.
当我将其重新格式化为if-then-else时,它可以正常工作.
任何人都可以解释错误,如果有一种方法可以做一个简单的三元运算符?
以下编译好了:
if (_logon.LogonToConnector())
{
MessageBox.Show("Logon Success");
}
else
{
MessageBox.Show("Logon Failed");
}
Run Code Online (Sandbox Code Playgroud)
但是对于更简洁的等价物:
_logon.LogonToConnector() ? MessageBox.Show("Logon Success") : MessageBox.Show("Logon Failure");
Run Code Online (Sandbox Code Playgroud)
编译器给出错误:
只有赋值,调用,递增,递减和新对象表达式才能用作语句UniformTestClient
我哪里做错了?