转换为字符串返回null

时间:2014-10-26 17:02:11

标签: c# console-application

虽然我试图将add方法的返回值转换为字符串,但它没有在console中返回任何值。而我删除了tostring方法它返回value.if我在控制台中显示的双引号中写入任何字符。 我在调用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();
        }

感谢。

3 个答案:

答案 0 :(得分:3)

使用没有参数的ToString

Add(23,54).ToString()

使用您指定的参数为字符串转换设置区域性。 更多here

答案 1 :(得分:3)

一切都与实施有关;

来自Int32.ToString(string)

  

如果format为null 或空字符串(""),则返回此值   实例使用通用数字格式说明符格式化(" G")。

这就是.ToString("")等于.ToString()的原因,因为

来自Int32.ToString()

  

ToString()方法格式化默认的Int32值(" G",或者   general)格式化使用当前的NumberFormatInfo对象   培养

我尝试使用.ToString("")格式化所有文化格式,无文化返回null或空字符串。

foreach (var c in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
    if((77).ToString("G", c) != "77")
        Console.WriteLine (c.Name);
}

蓝线可能有一个插件(可能是ReSharper)警告你使用另一个以CultureInfo为参数的重载。

答案 2 :(得分:0)

只需将您的文化字符串指定为string.empty

即可
            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是一个只读字段,而“”是编译时常量。有些地方表现不同。