.NET乘以布尔值

时间:2013-09-04 19:24:17

标签: .net boolean multiplying

我读过,建议不要依赖布尔(True)值乘以或在计算中使用它。还注意到在VB.NET中True是-1而不是1或任何其他值。

我有很多情况我希望乘以布尔值True并将其视为1的整数(或-1也可以)。 在计算中使用布尔值True的建议方法是什么

7 个答案:

答案 0 :(得分:3)

如果需要根据Boolean的值进行计算,请在C#中使用三元运算符,或在VB.NET中使用IF表达式:

Res = SomeValue * If(MyBoolean, 1, 0) + SomeOtherValue

这样的表达方式使读者清楚自己的意图,即使在指定布尔值特定数值(例如C或C ++)的语言中也能提高可读性。

答案 1 :(得分:1)

如果您想使用bool作为值01,分别对应falsetrue,请执行以下操作:

bool b = true;
double x = 3.14;
double y = (b ? 1 : 0) * x;

答案 2 :(得分:0)

如果你广泛依赖这个,我建议在bool上放一个扩展方法,返回你选择的数值 - 基于true / false。

答案 3 :(得分:0)

不知道为什么要使用布尔值进行计算。它们不适用于算术运算。

不知道这是否是最佳方式,但你可以这样做: -

bool b = true;
var x = 0;

if(b == true)
{
  x = -1;  // Use the value of this x anywhere you want provided the scope is clear.
}

答案 4 :(得分:0)

您可以使用ternary operator,这样您就不必猜测true是1还是-1。

int product = someValue * (myBool ? 1 : 0)

这也允许您将其他值定义为true和false。

答案 5 :(得分:0)

根据具体情况,您可能想要使用 IComparerIComparable 接口。例如。如果您已经有某种排序比较,它会产生一个 bool,然后您对其进行转换和乘法,那么最好使用这些接口之一并直接乘以结果,而不是执行比较,得到一个 bool,转换布尔值然后然后相乘。

但是请注意,因为它们都可以根据参数的顺序返回负数。此外,这可能只有在生成的 bool 是开始时排序比较的产物时才有任何用处。

答案 6 :(得分:-1)

您可以使用ALTER TABLE SalesOrderDetail ADD revenue NUMERIC(20, 4) GENERATED ALWAYS AS (UnitPrice*OrderQty) STORED; 方法将布尔变量转换为整数。

https://docs.microsoft.com/en-us/dotnet/api/system.convert.toint32?redirectedfrom=MSDN&view=net-5.0#System_Convert_ToInt32_System_Boolean _