使用默认值参数的空字符串连接

时间:2016-12-23 03:33:12

标签: c# string visual-studio-2015 null

我无法弄清楚原因

static void Main(string[] args)
{
    string nullstr=null;
    string teststring=string.Format("{0}", nullstr + (char)('A'+1));
    Console.WriteLine("After concatenating null string and char = " + test string);
}

是正确的并且运行正常,但

public void setName(string prefix=null)
{
    for(int i=0; i<Count; i++)
    {
        something[i].Name = string.Format("{0}", prefix+(char)('A'+i));
    }
}
通过在程序代码中的某个地方调用来失败

setName();

setName()函数默认为字符串为null但它抛出System.NullReferenceException

我正在使用Visual Studio 2015.

2 个答案:

答案 0 :(得分:1)

您可能需要仔细检查something[i]的内容。例外情况必须与此相关..

something[i].Name

答案 1 :(得分:1)

除了您提供的代码中的拼写错误之外,它在重新格式化时运行正常:

static void Main(string[] args)
{
    string nullstr = null;
    string teststring = string.Format("{0}", nullstr + (char)('A' + 1));
    Console.WriteLine("After concatenating null string and char = " + teststring);

    Console.WriteLine(setName(10, "_"));
}

public static string setName(int count = 0, string prefix = null)
{
    string str = "";
    for (int i = 0; i < count; i++)
    {
        str += string.Format("{0}", prefix + (char)('A' + i));
    }
    return str;
}

// Prints the following:
//
// After concatenating null string and char = B
// _A_B_C_D_E_F_G_H_I_J

因此,您的NullReferenceException必须来自您为其分配字符串的对象。 somethingsomething[i]为空。