Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将一个可为null的int转换为一个对不同地区的计算机安全的字符串?_C#_Int_Type Conversion_Locale_Nullable - Fatal编程技术网

C# 如何将一个可为null的int转换为一个对不同地区的计算机安全的字符串?

C# 如何将一个可为null的int转换为一个对不同地区的计算机安全的字符串?,c#,int,type-conversion,locale,nullable,C#,Int,Type Conversion,Locale,Nullable,我正在将可为空的整数转换为字符串,Resharper警告我使用不变量区域性 shipment.ShipmentID.ToString() 快速按住Alt键,然后按Enter键,可以得到以下信息: shipment.ShipmentID.ToString(CultureInfo.InvariantCulture) 不幸的是,Resharper并不满意,并提出了同样的建议,这对我来说毫无意义 shipment.ShipmentID.ToString(CultureInfo.InvariantCu

我正在将
可为空的整数
转换为
字符串
,Resharper警告我使用不变量区域性

shipment.ShipmentID.ToString()
快速按住Alt键,然后按Enter键,可以得到以下信息:

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture)
不幸的是,Resharper并不满意,并提出了同样的建议,这对我来说毫无意义

shipment.ShipmentID.ToString(CultureInfo.InvariantCulture, 
                                CultureInfo.InvariantCulture)
无法生成可为null的int上的ToString(),这给了我一个错误,说明没有重载方法“ToString”接受1个参数

不可为null的int的行为不同

int requiredInt = 3;
// no Resharper or compiler warning
var stringFromRequiredInt = requiredInt.ToString(CultureInfo.InvariantCulture); 
如何将
可为null的int
转换为对不同地区的计算机安全的
字符串

您应该仅对需要区域性独立结果的流程(如系统服务)使用不变区域性。在其他情况下,它产生的结果可能在语言上不正确或在文化上不恰当

更新:因此,使用它的主要目的之一可能是比较“if”语句。

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

由于
default(Nullable).ToString()
返回
string.Empty
,您可以像这样让ReSharper开心:

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

shipment.ShipmentID != null 
        ? ((int)shipment.ShipmentID).ToString(CultureInfo.InvariantCulture) : ""

使用Shipping.ShipmentID.Value时会发生什么情况?对于可为null的类型,我通常使用.HasValue布尔值检查null,然后使用.Value。