为何Visual Studio提示System.Int32转System.Byte的强制转换冗余?
解决IDE0004误报:强制转换
(byte)3.GetType()被标记为冗余 这个问题是VS代码分析规则IDE0004的误判——它没意识到这里的强制转换会直接改变GetType()的返回结果。
为什么会出现这个提示?
整数字面量3默认是int类型,强制转换成byte后得到的是byte实例,但IDE的分析逻辑误以为移除转换后语义不变,实际上移除转换的话,GetType()会返回System.Int32,和预期的System.Byte完全不同。
解决方法有这几种:
最直接的方式:用
typeof代替实例GetType()
如果你本来就是要获取byte的类型,没必要通过实例,直接用typeof(byte)更高效也不会触发警告:var y = typeof(byte); // 直接获取System.Byte类型先赋值给byte变量再调用GetType()
把强制转换后的结果存到一个显式类型的变量里,IDE就能识别到类型差异,不会再提示冗余:byte value = 3; var y = value.GetType(); // 返回System.Byte,无警告临时抑制警告
如果你必须保持原代码结构,可以用编译指令临时关闭IDE0004警告:#pragma warning disable IDE0004 var y = ((byte)3).GetType(); #pragma warning restore IDE0004
内容的提问来源于stack exchange,提问作者rory.ap
相关产品推荐
相关产品推荐

