十进制?类型不是特定于文化的
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()
。
我使用以下代码行将 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()
。