运算符'+'在'ulong'和'int'类型的操作数上是不明确的(C#)

时间:2015-12-25 20:48:17

标签: c# visual-studio

我正在尝试将ulong(Uint64)添加到正常的int值 ,它给了我标题中的错误(我正在使用visual studio 2015社区) 我也尝试将所有这些都投入ulong,但它仍然不起作用 这是一些示例代码

ulong balance = 0;
int salary = 5;
private void button_click()
{
     //this is what the error refrences:
     balance = balance + salary;
     //here's when I try to cast(gives the same error):
     balance = (ulong)(balance + salary);
     console.writeline("your balance is now : " + balance.tostring());
}

无论运算符是(/,+,*, - ),它仍会给出相同的错误:/ 我搜遍了整个地方,找不到任何解决这个问题的方法 我在msdn上检查过7页,没有,没有:(

我只是想知道如何加,减,除或乘以它们,谢谢:)

3 个答案:

答案 0 :(得分:6)

问题是您已将balance + salary的结果转换为salary而不是ulong以匹配balance类型。

这应该足够了:

balance += (ulong)salary;

如果要减少占用内存,可以将salary强制转换为uint而不是ulong(32位整数与64位整数)。当然,在一些非常罕见的情况下(大量数据而不是那么多内存)它确实有意义。 此外,您还需要考虑将有符号整数转换为无符号整数可能会导致某些(非)预期行为。

答案 1 :(得分:3)

您可以在添加:{/ p>时将int投射到ulong

balance += (ulong)salary;

或者长篇形式:

balance = balance + (ulong)salary;

答案 2 :(得分:0)

问题是Ulong总是积极而int不是。 但是,将薪水作为一个uint然后添加它们也很好。

这是有道理的,不会发出任何警告。