好的,我正在通过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的构造函数.... public RequestBase()!你会看到Helper.GetNextId()这只返回一个int为什么还要使用CultureInfo.InvariantCulture我不明白为什么一个简单的ToString inst足以完成这项工作或者什么,这不仅仅是更多的开销吗?
答案 0 :(得分:2)
当谈到整数时,目前没有公认的官方文化会影响Int32.ToString()
的行为方式。它总是会创建一个相同的字符串。
但是,这并不意味着自定义文化可能不会以不同的方式解释结果。 Resharper和其他代码样式工具通常建议使用文化来保持一致性。
值得注意的是,在整数之外旅行时,文化绝对有所作为。例如,在EN-US中,逗号用于千位分隔,句点用于表示小数点。另一方面,在EN-GB中则相反。保持价值类型之间的一致性当然可以被视为一种好习惯。
那就是说,在这种情况下,是的,为整数提供CultureInfo可能是不必要的“开销”,除非你更愿意保持代码库的一致性。
答案 1 :(得分:0)
在这种情况下,似乎没有必要。我知道像ReSharper和StyleCop这样的插件会抱怨(显示警告)一个空的ToString(),除非你告诉他们不要。在编写此代码时,可能会使用其中一个插件。
通常在转换日期和小数/货币值时使用CultureInfo.InvariantCulture
。