неверный вывод из Debug.WriteLine («Поместите текст здесь: {0}», myString) - PullRequest
7 голосов
/ 13 ноября 2011

String.Format отлично работает с Debug.WriteLine, если переменная не является строковым типом:

int myNumber = 1;
Debug.WriteLine("Put number here: {0}", myNumber);

Правильный вывод с ненулевым

  • Putчисло здесь: 1

Но если переменная является строкой:

string myString = "ShouldWork";
Debug.WriteLine("Put text here: {0}", myString);

Неверный вывод со строкой

  • ShouldWork: Putтекст здесь: {0}

Почему?

Ответы [ 3 ]

18 голосов
/ 13 ноября 2011

Вы получаете неправильная перегрузка ...

Вы можете обойти это:

Debug.WriteLine("Put text here: {0}", myString, null/*dummy*/);

Хорошая обертка будет

public static void DebugFormat(string fmt, params object[] p)
{
     Debug.WriteLine(fmt, p); // this will select the right overload 
                              // ... due to typeof(p)==object[]
}

// ...
DebugFormat("Put text here: {0}", myString, null/*dummy*/);
int myNumber = 1;
DebugFormat("Put number here: {0}", myNumber);
2 голосов
/ 13 ноября 2011

Вы случайно вызываете другую перегрузку:

http://msdn.microsoft.com/en-us/library/1w33ay0x.aspx

. Для желаемого поведения вы можете использовать конкатенацию строк:Формат строки:

Debug.WriteLine(String.Format ("Put text here: {0}", myString));
2 голосов
/ 13 ноября 2011

Попробуйте:

Debug.WriteLine(string.Format("Put number here: {0}", 1));

Кроме того, убедитесь, что для параметра «Вывод» (раскрывающегося меню) в Visual Studio установлено значение «Отладка ...» Во многих случаях он не включен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...