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

Cel*_*Cel 7 .net c# string format logging

如果变量不是字符串类型,String.Format适用于Debug.WriteLine:

int myNumber = 1;
Debug.WriteLine("Put number here: {0}", myNumber);
Run Code Online (Sandbox Code Playgroud)

使用非字符串更正输出

  • 把号码放在这里:1

但如果变量是字符串:

string myString = "ShouldWork";
Debug.WriteLine("Put text here: {0}", myString);
Run Code Online (Sandbox Code Playgroud)

字符串输出不正确

  • 应该工作:把文字放在这里:{0}

为什么?

seh*_*ehe 18

得错了重载 ......

你可以解决这个问题:

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

一个好的包装将是

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);
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是C#4,请使用命名参数. (4认同)