如何将可空int转换为对不同语言环境中的计算机安全的字符串?

Jon*_*ell 7 c# int locale nullable type-conversion

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

shipment.ShipmentID.ToString()
Run Code Online (Sandbox Code Playgroud)

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

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

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

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture, 
                                CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

nullable int上的ToString()将不会构建,给出一个错误,指出No overload方法'ToString'需要1个参数.

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

int requiredInt = 3;
// no Resharper or compiler warning
var stringFromRequiredInt = requiredInt.ToString(CultureInfo.InvariantCulture); 
Run Code Online (Sandbox Code Playgroud)

如何将a转换为nullable intstring不同语言环境中的计算机安全的应该怎么做?

pho*_*oog 12

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

由于default(Nullable<int>).ToString()回报率string.Empty,可以使ReSharper的快乐是这样的:

shipment.ShipmentID.HasValue 
        ? shipment.ShipmentID.Value.ToString(CultureInfo.InvariantCulture) : ""
Run Code Online (Sandbox Code Playgroud)

或者:

shipment.ShipmentID != null 
        ? ((int)shipment.ShipmentID).ToString(CultureInfo.InvariantCulture) : ""
Run Code Online (Sandbox Code Playgroud)