【发布时间】:2017-02-14 22:44:34
【问题描述】:
我正在使用的 api 有一个 ulong 字段(我无法更改它)。我需要通过long 数量调整此字段(也可以是int)。但是我不能把这些加在一起:Operator '+' is ambiguous on operands of type 'ulong' and 'long'。
我无法将long 转换为ulong,因为我会丢失符号,我无法将ulong 转换为long,因为我可能会丢失部分价值。
最终我想尝试调整该值,如果它会导致换行,我想返回 false 并且不完成调整。如果它不换行,我想完成调整并返回 true;我可以做这部分,但前提是我首先能想出一种方法将这两个字段加在一起。
public ulong Value;
public bool AdjustValue(long amount)
{
// Operator '+' is ambiguous on operands of type 'ulong' and 'long'
ulong adjustValue = Value + amount;
if (amount < 0 && adjustValue > Value)
return false;
if (amount > 0 && adjustValue < Value)
return false;
Value = adjustValue;
return true;
}
我该如何解决这个问题?
【问题讨论】:
-
不清楚你想做什么,但也许你可以使用 System.Numerics 中的 BigInteger 类找到解决方案
-
if (long < 0) ulong -= (ulong)(-long); else ulong += (ulong)long;? -
@itsme86 - 完美,我试过了,但错过了
-long 部分!谢谢 -
没问题。对我来说似乎仍然很笨拙,并且可能比简单的添加操作生成更多的 IL 指令。可能是某个地方更好的解决方案。
-
也许将两者都转换为十进制然后将结果转换回来?