十进制?类型不是特定于文化的

时间:2015-11-11 17:03:07

标签: c# resharper cultureinfo

我正在使用以下代码行将decimal转换为string

decimal a = 0;
a.ToString();

和Resharper给了我以下警告:“指定字符串文化表达”。我想这是有道理的,因为有些文化可能会使用“。” (点)或“,”(逗号)作为小数点。

但是,以下代码行:

decimal? a = 0; //a is now nullable
a.ToString();

不要出现相同的警告。我想知道这是否是Resharper中的一个错误,或者是否有一个关于可以为空的decimal的特殊内容?

2 个答案:

答案 0 :(得分:6)

为了扩展Gama Felix的答案,我认为这是因为decimal?.ToString()没有超载可以接受文化。如果你不关心文化特定的字符串,那么你就设置了。如果你关心,那么你应该检查一个值并使用decimal?.Value.ToString()

答案 1 :(得分:3)

我认为这是因为decimal?只是Nulable<decimal>的别名,所以你在可空类上调用ToString()方法而不是小数类型。