2016-12-23 1 views
-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 = " + 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() по умолчанию настроен на строку с нулевым, но он бросает System.NullReferenceException

Я использую Visual Studio 2015.

+1

Вы уверены, что NullReferenceException с префиксом? – DarkKnight

+0

Ваш код объявляет 'nullstr', но никогда не использует его и использует' nullptr', но не объявляет его. Это код, с которым вы фактически работаете? – Abion47

+0

См. Отмеченный дубликат для подробных консультаций по диагностике и исправлению 'NullReferenceException'. Если после тщательного прочтения совета и последующего его выполнения у вас по-прежнему возникают проблемы, задайте новый вопрос, в который вы включили хороший [mcve], который надежно воспроизводит проблему и точно объясняет, что вы пытались отладить проблему, и с какой особенностью вы все еще испытываете проблемы. –

ответ

1

Вы можете перепроверить содержание something[i]. Исключение должно быть с этим ..

something[i].Name 
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 должны приходить из объектов, которые вы назначаете строка в. Либо something, либо something[i] - null.