【问题标题】:decimal? type is not culture specific十进制?类型不是文化特定的
【发布时间】:2015-11-11 17:03:06
【问题描述】:

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

decimal a = 0;
a.ToString();

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

但是,以下代码行:

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

不要显示相同的警告。我想知道这是否是 Resharper 中的错误,或者可空的 decimal 有什么特别之处?

【问题讨论】:

    标签: c# resharper cultureinfo


    【解决方案1】:

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

    【讨论】:

    • 只是补充一点,默认ToString使用当前线程的CultureInfo
    【解决方案2】:

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

    【讨论】:

    • 它是Nullable<T>,它的ToString() 方法没有任何重载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多