转换为字符串返回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();
        }

谢谢。

转换为字符串返回null

这一切都与实现有关;

来自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是只读字段,而"是编译时常数。有些地方它们的行为不同。