c#为什么要使用CultureInfo ?对于这样一个简单的任务

本文关键字:一个 简单 任务 于这样 为什么 CultureInfo | 更新日期: 2023-09-27 18:15:54

好吧,我正在通过Saplo Api c#项目。当我看到这些代码时,我很困惑:

public class Helper
{
    private static int _currentId;
    public static int GetCurrentId()
    {
        return _currentId;
    }
    public static int GetNextId()
    {
        return ++_currentId;
    }
}
[DataContract]
internal class RequestBase<T>
{
    public RequestBase()
    {
        ID = Helper.GetNextId().ToString(CultureInfo.InvariantCulture);
    }
    public RequestBase(string method, T @params)
        : this()
    {
        Method = method;
        Parameters = @params;
    }
    [DataMember(Name = "id")]
    public string ID { get; private set; }
    [DataMember(Name = "method")]
    public string Method { get; set; }
    [DataMember(Name = "params")]
    public T Parameters { get; set; }
}

如果你看RequestBase....的构造函数公共RequestBase () !你会看到Helper.GetNextId()只返回一个int,为什么要使用CultureInfo呢?我不明白为什么一个简单的ToString就足够做这个工作了,这不是更大的开销吗?

c#为什么要使用CultureInfo ?对于这样一个简单的任务

当涉及到整数时,目前没有公认的官方文化会影响Int32.ToString()的行为。它将始终创建一个相同的字符串。

然而,这并不意味着自定义文化可能不会以不同的方式解释结果。Resharper和其他代码风格工具通常建议使用文化来保持一致性。

值得注意的是,当在整数之外旅行时,文化绝对是不同的。例如,在EN-US中,逗号用于千位分隔,句号用于表示小数点。另一方面,在EN-GB中,情况正好相反。保持值类型之间的一致性当然可以看作是一个好习惯。

也就是说,在这种情况下,是的,为整数提供CultureInfo可能是不必要的"开销",除非您希望保持代码库的一致性。

在这种情况下似乎没有必要。我知道像ReSharper和StyleCop这样的插件会抱怨(显示警告)一个空的ToString(),除非你告诉他们不要这样做。在编写此代码时可能使用了其中一个插件。

通常在转换日期和十进制/货币值时使用CultureInfo.InvariantCulture