7

我正在将 a 转换nullable integer为 a string,Resharper 警告我使用 InvariantCulture。

shipment.ShipmentID.ToString()

一个快速的 Alt-Enter,稍后输入,给了我这个:

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture)

不幸的是,Resharper 并不满意,并提出了同样的建议,这对我来说没有意义。

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture, 
                                CultureInfo.InvariantCulture)

可空 int 上的 ToString() 将无法构建,给我一个错误,指出没有重载方法 'ToString' 需要 1 个参数

不可为空的整数表现不同。

int requiredInt = 3;
// no Resharper or compiler warning
var stringFromRequiredInt = requiredInt.ToString(CultureInfo.InvariantCulture); 

我应该怎么做才能将 a 转换为对不同区域设置的计算机安全的nullable inta ?string

4

2 回答 2

12

Nullable<T>没有ToString()参数重载;ReSharper 并没有很好地处理这种情况。

由于default(Nullable<int>).ToString()return string.Empty,您可以像这样让 ReSharper 开心:

shipment.ShipmentID.HasValue 
        ? shipment.ShipmentID.Value.ToString(CultureInfo.InvariantCulture) : ""

或者:

shipment.ShipmentID != null 
        ? ((int)shipment.ShipmentID).ToString(CultureInfo.InvariantCulture) : ""
于 2012-04-12T16:36:55.490 回答
1

检查此链接

您应该仅将不变区域性用于需要与区域性无关的结果的过程,例如系统服务。在其他情况下,它产生的结果可能在语言上不正确或在文化上不合适。

更新:所以使用它的主要目的之一可能是例如'if'语句比较。

于 2012-04-12T16:33:54.423 回答