转换为字符串返回null
本文关键字:null 返回 字符串 转换 | 更新日期: 2023-09-27 18:28:03
当我试图将add方法的返回值转换为字符串时,它不会在控制台中返回任何值。当我删除tostring方法时,它会返回值。如果我在控制台中显示的双引号中写入任何字符。我调用tostring方法时发生了什么?如果我没有把任何双引号作为参数,它会显示编译时错误,比如(指定字符串的区域性)在将int转换为字符串时指定区域性的目的是什么?我想我可以通过调用tostring方法将整数值转换为字符串,为什么在这种情况下不能进行转换?
private static int Add(int x,int y)
{
return x+y;
}
static void Main(string[] args)
{
Console.WriteLine(Add(23,54).ToString(""));
Console.ReadKey();
}
谢谢。
这一切都与实现有关;
来自Int32.ToString(string)
如果格式为null或空字符串("),则实例使用通用数字格式说明符("G")进行格式化。
这就是为什么.ToString("")
等于.ToString()
,因为
来自Int32.ToString()
ToString()方法将Int32值格式化为默认值("G",或general)格式文化
我尝试了所有区域性都使用.ToString("")
进行格式化,没有区域性返回null
或空字符串。
foreach (var c in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
if((77).ToString("G", c) != "77")
Console.WriteLine (c.Name);
}
蓝线可能有一个插件(可能是ReSharper)警告您使用另一个以CultureInfo
为参数的重载。
使用无参数的ToString
Add(23,54).ToString()
使用指定的参数可以设置字符串转换的区域性。点击此处了解更多信息。
只需将字符串的区域性指定为字符串。空
Console.WriteLine(Add(23,54).ToString(string.Empty));
Console.ReadKey();
区域性名称:"(空字符串)
区域性标识符:0x007F
语言国家/地区:不变文化
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.71%29.aspx
string.Empty是只读字段,而"是编译时常数。有些地方它们的行为不同。