我很想知道是否有这样的运营商可以进行以下操作
初始行:
if(foo > 1 && foo < 10)
期望行:(变量重复假设?)
if(foo > 1 && < 10)
我希望对自己进行一些关于这些操作员如何在较低级别工作的教育,解释为什么不这样做将不胜感激。
谢谢,
不,C# 中没有这样的运算符。您将不得不重复要比较的变量或表达式。
我不知道 C# 中不存在这种运算符的官方原因,但这里有一些想法:
您可以(尽管我认为这不是一个好主意)创建一个扩展方法:
void Main()
{
int foo = 5;
if (foo.Between(1, 10))
Debug.WriteLine("> 1 and < 10");
else
Debug.WriteLine("?");
}
public static class Extensions
{
public static bool Between<T>(this T value, T lowNotIncluded, T highNotIncluded)
where T : struct, IComparable<T>
{
return value.CompareTo(lowNotIncluded) > 0 && value.CompareTo(highNotIncluded) < 0;
}
}
但不建议这样做。如果您想采用扩展方法路线,要提出的一个问题是如何处理>
、>=
、<
和的所有组合<=
。
这种类型的运算符在 C# 中不存在。但无论如何我都不会使用它,因为您的代码的可读性和意图不是很清楚。相反,我会使用这样的扩展方法:
// using extension method
int number = 15;
if (number.IsBetween(0, 12))
{
...
}
// definition of extension method
public static bool IsBetween(this int num, int lower, int upper, bool inclusive = false)
{
return inclusive
? lower <= num && num <= upper
: lower < num && num < upper;
}