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

decimal? type is not culture specific

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

decimal a = 0;
a.ToString();

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

但是,下面几行代码:

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

不显示相同的警告。我想知道这是否是 Resharper 中的错误,或者可空 decimal?

有什么特别之处

我相信它会发生,因为 decimal? 只是 Nulable<decimal> 的别名,所以您在可空 class 而不是小数类型上调用 ToString() 方法.

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