Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
.net 区域性不变对象ToString()_.net_Formatting_Culture_Cultureinfo - Fatal编程技术网

.net 区域性不变对象ToString()

.net 区域性不变对象ToString(),.net,formatting,culture,cultureinfo,.net,Formatting,Culture,Cultureinfo,如何对对象调用ToString(),并使其使用不变区域性? 在实现IConvertible的对象上有ToString()的重载(如bool、int、float…),但是如果所讨论的对象不是IConvertible,该怎么办?我认为IFormattable是相关的接口。它有一个ToString方法,允许您指定格式提供程序,格式提供程序可以是区域性。系统。Convert类有一个静态ToString重载,它接受一个对象 Convert.ToString(obj, CultureInfo.Invaria

如何对对象调用
ToString()
,并使其使用不变区域性?
在实现
IConvertible
的对象上有
ToString()
的重载(如bool、int、float…),但是如果所讨论的对象不是
IConvertible
,该怎么办?

我认为
IFormattable
是相关的接口。它有一个
ToString
方法,允许您指定格式提供程序,格式提供程序可以是区域性。

系统。Convert类有一个静态
ToString
重载,它接受一个
对象

Convert.ToString(obj, CultureInfo.InvariantCulture);
基于,这大约是
string.Format(CultureInfo.InvariantCulture,“{0}”,value)
的两倍,更重要的是,它看起来更干净。但是,如果您已经在构建字符串,我建议您使用FormattableString.Invariant

FormattableString.Invariant($"Object value: {obj}")

由于区域性是一种格式提供程序,您可以将其与
String.format(CultureInfo.InvariantCulture,{0},value)一起使用
请使用
String
而不是推荐的
String
。@nitzel:C#不是.NET Framework中唯一的语言。“而且看起来更干净”如果开始时字符串插值要转义多个项,则不会。使用
string.Format
,它可以一次完成所有操作。@jeromej:这是一个很好的观点,不过如果您使用字符串插值,我建议使用
FormattableString.Invariant
,以提高可读性。我相应地更新了我的答案。