HBF*_*Fan 7 c# casting compiler-warnings
有没有办法配置VS2008 C#编译器为这样的代码发出警告:
Int64 x = 123456789000;
Int32 y = (Int32)x;
Run Code Online (Sandbox Code Playgroud)
ang*_*son 10
明确演员的重点是说"我对这个问题负责,请你去做."
在你无关紧要的情况下,编译器可能很容易发现该值不适合Int32,从而产生警告.
但是,这个怎么样:
Int64 x = CallSomeMethod();
Int32 y = (Int32)x;
Run Code Online (Sandbox Code Playgroud)
它怎么能警告你呢?应该是:
你可以期待的最好的是进行运行时检查,或者类似的,编译器不能阻止你出现可能出错的一切.
所有必要的演员表都可能导致数据丢失.演员的目的是告诉编译器"我在这里做了一些你无法分析的危险,但我知道我在做什么".由于演员的整个目的是处理编译器不够智能分析的情况,期望编译器分析它以给出警告似乎毫无意义.
因此,你的提议实际上是对每一个必要的演员发出警告,这似乎适得其反.
我注意到隐式转换在某些极少数情况下也会导致数据丢失.隐式转换可能会失去一些精确度 ; 隐含的转换保留的是幅度.
转到项目的属性视图,单击“构建”选项卡,单击右下角的“高级”按钮,选中“检查算术溢出/下溢”复选框
归档时间: |
|
查看次数: |
447 次 |
最近记录: |