C# 有用的运算符尚未实现

C# 有用的运算符尚未实现,c#,operators,C#,Operators,C#中是否有空间容纳但操作符 i、 e: 相对于 if (checkBox.Checked == false || (checkBox.Checked && comboBox.SelectedItem != null)) { ... } 还有哪些当前不存在的运算符可以用来避免键入可读性较差的语句 更新 肯尼特已经向我建议的但是操作员发布了一条消息,但是我们没有抓住要点。我知道可以组合现有的运算符来创建任何可能的表达式,我只是想知道我的代码可以更好地表达我的意图 例如,“如果未选

C#中是否有空间容纳
操作符

i、 e:

相对于

if (checkBox.Checked == false || (checkBox.Checked && comboBox.SelectedItem != null)) { ... }
还有哪些当前不存在的运算符可以用来避免键入可读性较差的语句

更新
肯尼特已经向我建议的
但是
操作员发布了一条消息,但是我们没有抓住要点。我知道可以组合现有的运算符来创建任何可能的表达式,我只是想知道我的代码可以更好地表达我的意图

例如,“如果未选中复选框或未选择任何内容”与“如果选中复选框但未选择任何内容”的扫描效果不一样

更新2:
对于那些说“and”与“but”相同的人来说,这只是一个更新。虽然我同意这在逻辑上是正确的(我不想重开这一期),但我想与大家分享一段引文,其中建议在“和”和“但是”之间进行选择,有时会产生很大的不同:


菲尔·温斯坦利-2011年2月22日

非常感谢。:)

因此


我发现这并不比创建一个新操作符更难理解。此外,
不是
在编程语言中对布尔变量有着明确的意义,但是
但是
不是,所以你需要大量的文档来解释
(a但是b)=(!a | | b)
,而不是
a&!b
a&b
给每个人。这不值得。

如果我们从这里开始,它在哪里结束。然而,如果你喜欢这样的东西,也许Boo适合你。这允许您添加自己的语法。

是什么阻止您编写But扩展方法

public static bool But(this bool original, bool secondExpression)
{
  return original || (original && secondExpression));

}
在我看来,这更好,因为它促进了编程成为一种语言,而不是仅仅使用一种语言。

我认为“but”的意思与“and”相同!例如。 “我喜欢C,但我讨厌C++”与“我喜欢C,我讨厌C++”的意思相同。它们都是连词(连接语句)

在您的示例中,您肯定只希望在选中组合框但没有选中项的情况下执行if语句的主体?这意味着要将其归档,必须选中组合框;即。: checkBox.Checked&&comboBox.SelectedItem==null

因此,我认为你关于“但是”应该翻译成什么的例子是不正确的


我的C#已经过时了,但是如果有一种方法可以在C#中定义类似宏的东西,您可以将“but”定义为“&&&”的别名,但我认为它不会带来什么好处。

在Perl中,您可以编写:

if ($checkBox.Checked) doSomething() unless (!$comboBox.SelectedItem);

就我个人而言,我非常赞成使用更具表现力的语言,但这必须与由此带来的痛苦相平衡。

如何创建此社区wiki?将帖子标记给版主。他们会为你做的我们真的需要一个butt运算符:)你为什么要定义一个与句子的英语阅读不匹配的逻辑运算符?示例:如果正在下雨,但窗口仍然打开,其含义与下面的C#相同:
If(raining&&windowState==open)
@Neil:如果这是您想要的,那么它与but的日常语义几乎没有相似之处。它也不同于您的句子“如果选中复选框但未选择任何内容”。和
(!a | |!b)=!(a和b)
Lol看不见树木,看不见树木。问题是,这就是我的观点——我想更好地表达我的意图——这种双重否定和/或类型的表达式往往是难以发现的bug的来源。+1我发现使用现有运算符比创建一个我必须学习的新运算符更容易理解。“如果未选中复选框或所选项目不为空”,则扫描效果不好。我想写一段代码来表达我的意图:“如果复选框被选中,但什么都没有被选中”。@Neil:那应该是
checkbox.checked&&comboBox.SelectedItem!=空
那么?为什么有一个
复选框。Checked==false
?如果第一个表达式爆炸,| |将短路。否-如果复选框未选中,我希望语句体执行,或者如果复选框已选中,但未选中任何内容。尼尔:如果您希望在复选框未选中时执行语句,这不是这个词的日常语义,而是它所暗示的!因此,您需要为该运算符想出一个不同的词。这将简化为返回原始值。啊哈!我刚刚意识到,如果原文是真的,短路会立即变为真。每一种流行语言都展示了TMTOWTDI。这几乎是一句格言:并非所有程序员的思维方式都完全相同,如果只有一种表达方式,那么程序员在使用该语言之前必须学会以这种方式思考,这就阻止了它的流行。此外,编程通常遵循以下规则:您可以快速、简单或正确地完成它,但幸运的是您得到了两个,而不是全部三个。
if (!checkBox.Checked || comboBox.SelectedItem != null) { ... }
public static bool But(this bool original, bool secondExpression)
{
  return original || (original && secondExpression));

}
if ($checkBox.Checked) doSomething() unless (!$comboBox.SelectedItem);