为什么 Visual Studio 说从 System.Int32 到 System.Byte 的强制转换是多余的?

Why is Visual Studio saying this cast from System.Int32 to System.Byte is redundant?

提问人:rory.ap 提问时间:8/2/2023 更新时间:8/3/2023 访问量:105

问:

我正在尝试检索单元测试的类型,但是当我执行如下所示的简单转换时,我在 VS 中获得了代码分析信息,表明该转换是多余的。为什么?显然,需要强制转换来防止结果返回,而不是 .ByteSystem.Int32System.Byte

enter image description here

C# visual-studio-2022 代码分析 roslyn-code-analysis

评论

1赞 Zohar Peled 8/2/2023
不确定您在这里尝试做什么,购买为什么不干脆做?var y = typeof(byte);
1赞 Rand Random 8/2/2023
@ZoharPeled - 代码很可能被简化以显示手头的问题
3赞 Matthew Watson 8/2/2023
这是因为你有一个常量,代码分析知道它适合一个字节,所以它 100% 确定地“知道”你不需要强制转换它。但这是不正确的,因为删除强制转换会改变行为 - 因此我同意这是代码分析误报。换句话说:我认为这是一个错误。
1赞 canton7 8/2/2023
@RandRandom 这是编译器(嗯,相关的 Roslyn 分析器)中的错误,而不是编译器引发的错误
1赞 Matthew Watson 8/2/2023
@RandRandom IDE 代码分析不是由编译器完成的,它有一个单独的程序集。

答:

0赞 roten 8/2/2023 #1

我不确定,但我最好的猜测是,因为你要强制转换的值是编译时已知的,所以它让你知道语义是相同的。只要您不使用反射来获取类型信息,就是如此。