int result = (int)data; 上面的代码编译时没有任何错误和警告,并且在data为空的情况下会导致Nullable object must have a value异常。有没有一个警告,我们可以打开Visual Studio (社区/专业/代码),不允许这种显式转换,本质上强制使用Value属性?这样,我认为有更高的机会不会错过null检查。
= maybeValue) MyEnum value = (MyEnum)maybeValue;我想知道的是,在MyEnum?类型的实例上是否需要显式(MyEnum)强制转换。这似乎是一个简单的问题,我只是觉得偏执,如果我只是在if语句中执行MyEnum value = maybeValue,可能会出现一些运行时错误。
unsigned long long i = 1000;
现在0.1*i不是应该自动转换为double吗?那么,当我将0.1*i传递给一个需要unsigned long long的函数参数时,编译器为什么不警告我呢?我认为编译器应该警告这种可能的精确度损失。我将我的编译器Clang配置为"-Weverything“,以显示所有可能的警告。