我有以下内容Debug.WriteLine
:
Debug.WriteLine("Metadata Version: {0}", version); // update: version is a string
Run Code Online (Sandbox Code Playgroud)
输出是:
2.0:元数据版本:{0}
为什么字符串格式化?
我没有在MSDN文档中看到任何标识这种格式背后的推理的内容.我必须执行以下操作才能获得格式正确的输出:
Debug.WriteLine(string.Format("Metadata Version: {0}", version));
Run Code Online (Sandbox Code Playgroud)
Ser*_*rvy 25
既然version
是a string
,那么你就要接受一个类别的重载WriteLine
作为它的第二个参数.
虽然有任何数量的黑客可以绕过这种行为(我将在下面添加一些,为了好玩)我个人更喜欢你的解决方案作为明确确保字符串被视为格式字符串的首选方式.
其他一些hacky解决方法:
Debug.WriteLine("Metadata Version: {0}", version, "");
Debug.WriteLine("Metadata Version: {0}", (object)version);
Debug.WriteLine("Metadata Version: {0}", new[] { version });
Debug.WriteLine("Metadata Version: {0}", version, null);
Run Code Online (Sandbox Code Playgroud)
Hab*_*bib 13
由于您version
是字符串,因此它使用Debug.WriteLine方法(String,String)重载.
您可以做几件事来获得正确的结果:
Debug.WriteLine("Metadata Version: {0}",(object) version);
Run Code Online (Sandbox Code Playgroud)
或者你可以使用 Debug.Print
Debug.Print("Metadata Version: {0}", version);
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用字符串插值。$
只需在字符串前面放置一个符号并在大括号中指定变量即可{variableName}
。
Debug.WriteLine($"Metadata Version: {version}");
Run Code Online (Sandbox Code Playgroud)