Mas*_*low 8 f# compiler-warnings
我希望满足编译器警告级别5.所以我在一个文件中有32个警告FS0052 已复制该值以确保此操作不会改变原始值
我已经关注了似乎与此警告相关的唯一SO帖子,但由于我的类型是由Microsoft生成的类型提供程序,因此我不能只是将字段标记为可变以安静警告.加上一些实际上不应该变异的可变东西看起来像是黑客而不是修复.
例子:
.GetValueOrDefault().ToString().toString()从正确的功能角度处理此警告的建议方法是什么?
不知道您是否仍然感兴趣。
在我看来,当不确定方法调用是否会破坏原始实例的状态时,编译器会发出警告(这主要应来自F#以外的任何库)。
就我而言,将值显式复制到变量中通常可以减轻警告。例如:
open System
// generate the warning due to "ToString()"
let DirSeparator = Path.DirectorySeparatorChar.ToString()
// no warning
let ExplicitCopy = let x = Path.DirectorySeparatorChar in x.ToString()
let Alternative = sprintf "%c" Path.DirectorySeparatorChar
Run Code Online (Sandbox Code Playgroud)