C# 在条件下否定值?

C# 在条件下否定值?,c#,C#,我有以下资料: public Boolean Test(Boolean value, Boolean negation) { return negation ? !value : value; } 所以,只有当negated为true时,值才会被否定。否则,返回的值为true或false < P>是否有任何操作符来代替我所做的工作?< P>查找布尔运算的操作符,应该考虑创建A以查看所有可能的结果。在您的情况下,有两个输入值V和否定N: 如您所见,您返回true,只有N和V中的一个为true

我有以下资料:

public Boolean Test(Boolean value, Boolean negation) {
  return negation ? !value : value;
}
所以,只有当negated为true时,值才会被否定。否则,返回的值为true或false


< P>是否有任何操作符来代替我所做的工作?

< P>查找布尔运算的操作符,应该考虑创建A以查看所有可能的结果。在您的情况下,有两个输入值V和否定N:

如您所见,您返回true,只有N和V中的一个为true。这是一个很好的例子

在C中,这是运算符^xor,因此您可以这样编写函数:

public bool Test(bool value, bool negation)
{
    return negation ^ value;
}

这将是返回否定^value@code4life Boolean是.NET中的合法类型。是的,我也意识到了…:-我只想指出,许多程序员都在与XOR作斗争。即使对于理解XOR的人来说,如果你不经常使用XOR,你也必须停下来想想否定值到底意味着什么。我很想让函数按您的方式运行—目的要明确得多—并依靠编译器/JIT自动将其优化为XOR,除非您发现它不是,并且它导致了性能问题。@Steven这实际上是一个很好的观点!对某些人来说,唯一的缺点是可读性。这个主题可以在重构书籍中找到。当在方法中使用它时,它可能并不总是清晰或可读的,而传统的if语句使逻辑更可读。在你使用小方法的情况下,情况可能并非如此。当然,当你缩短一个约20个字符的表达式时,你并不是在增加清晰度;
public bool Test(bool value, bool negation)
{
    return negation ^ value;
}