C# 十进制的类型不是特定于区域性的

C# 十进制的类型不是特定于区域性的,c#,resharper,cultureinfo,C#,Resharper,Cultureinfo,我正在使用以下代码行将十进制转换为字符串: decimal a = 0; a.ToString(); decimal? a = 0; //a is now nullable a.ToString(); Resharper给了我以下警告:“明确指定字符串区域性”。我想这是有道理的,因为有些文化可能会使用“.”(点)或“,”(逗号)作为小数点 但是,以下代码行: decimal a = 0; a.ToString(); decimal? a = 0; //a is now nullable a

我正在使用以下代码行将
十进制
转换为
字符串

decimal a = 0;
a.ToString();
decimal? a = 0; //a is now nullable
a.ToString();
Resharper给了我以下警告:“明确指定字符串区域性”。我想这是有道理的,因为有些文化可能会使用“.”(点)或“,”(逗号)作为小数点

但是,以下代码行:

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

不要给出相同的警告。我想知道这是否是Resharper中的一个bug,或者可为null的
十进制数
有什么特别的地方吗?

我相信这是因为
decimal?
只是
Nulable
的别名,所以您调用
ToString()
可空类上的方法不是decimal类型。

为了扩展Gama Felix的答案,我假设这是因为
decimal?.ToString()
没有接受区域性的重载。如果您不关心特定于区域性的字符串,那么您已经设置好了。如果你在意的话,那么你应该检查一个值并使用
decimal?.value.ToString()

它是
可空的
,它的
ToString()
方法上没有任何重载。只需添加默认的
ToString
使用当前线程的
CultureInfo