Debug.WriteLine的输出不正确(“将文本放在此处:{0}”,myString)

本文关键字:myString 不正确 输出 WriteLine 文本 Debug | 更新日期: 2023-09-27 18:14:41

如果变量不是字符串类型,String.Format可以很好地与Debug.WriteLine配合使用:

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

非字符串的正确输出

  • 在此处输入数字:1

但如果变量是字符串:

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

字符串输出错误

  • ShouldWork:将文本放在此处:{0}

为什么

Debug.WriteLine的输出不正确(“将文本放在此处:{0}”,myString)

您得到了错误的过载。。。

你可以解决这个问题:

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);

您无意中调用了不同的重载:

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

对于所需的行为,可以使用字符串串联:

Debug.WriteLine("Put text here: " + myString);

或调用字符串。格式:

Debug.WriteLine(String.Format ("Put text here: {0}", myString));

尝试:

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

此外,请确保Visual Studio中的"输出"选项(下拉菜单(设置为"调试…"。。。在许多情况下,默认情况下不会启用它。