c# - 如何抑制 C# 警告 CS0675 : Bitwise-or operator used on a sign-extended operand

标签 c# .net compiler-warnings

我似乎无法摆脱以下代码行的警告:

d.word[wrdIndex++] = d.GetWord(english) | (ulong)i;

警告适用于赋值运算符之后的代码。 GetWord 方法返回一个 ulong。我尝试了以下无济于事:

d.word[wrdIndex++] = (d.GetWord(english) | (ulong)i);
d.word[wrdIndex++] = d.GetWord(english) | ((ulong)i);
d.word[wrdIndex++] = ((ulong)d.GetWord(english)) | ((ulong)i);

有人有什么想法吗?

最佳答案

更新:这个问题是my blog on Monday November 29th 2010的主题.

谢谢你的好问题!


您可以通过首先考虑警告并确定编译器是否正确首先将问题引起您的注意来消除警告! 您实际上是否会从按位得到不正确的结果,或者从有符号类型到更大的无符号类型的转换是否应该对整数进行符号扩展?

如果答案是,那么您的解决方案是错误的。不要通过欺骗编译器在不给你警告的情况下继续做错误的事情来消除警告。通过做正确的事情消除警告:不要使用对整数进行符号扩展的转换。

如果答案是,而您想要符号扩展,那么您的解决方案或 Hans Passant 的解决方案是正确的。但是,我会在代码中对此效果进行注释,因为就目前而言,很难看出符号扩展是可取的。

关于c# - 如何抑制 C# 警告 CS0675 : Bitwise-or operator used on a sign-extended operand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4058960/

相关文章:

c# - 通过 Lazy<T> 或任何 lambda 表达式访问非静态成员

java - 为什么实例字段的 "int someVal=0"不被视为死代码?

c# - #if DEBUG 和 return 语句 - 无法访问的代码警告

.net - 测量实时 IIS 网站的代码性能瓶颈?

.net - 如何在后面的代码中使用DynamicResource?

c# - 需要帮助理解代码

c# - 程序设置未更新

Java 相当于 warn_unused_result

c# - 获取 TextBox/RichTextBox 中文本的 XY 位置

c# - 客户端模型应使用哪些数据类型与 Azure 移动应用 SDK 进行离线同步?