debug writeline有奇怪的输出

时间:2016-04-04 14:58:45

标签: asp.net vb.net visual-studio-2012

使用此代码在VS-2012 Express for Web中编码 - VB.Net ...

Diagnostics.Debug.WriteLine(vbTab + ".prpUID_REPORT      = [{0}]", .prpUID_REPORT)
Diagnostics.Debug.WriteLine(vbTab + ".prpRV_HeaderDSName = [{0}]", .prpRV_HeaderDSName)
Diagnostics.Debug.WriteLine(vbTab + ".prpRV_HeaderDSId   = [{0}]", .prpRV_HeaderDSId)
Diagnostics.Debug.WriteLine(vbTab + ".prpRV_ReportDSName = [{0}]", .prpRV_ReportDSName)
Diagnostics.Debug.WriteLine(vbTab + ".prpRV_ReportDSId   = [{0}]", .prpRV_ReportDSId)
Diagnostics.Debug.WriteLine(vbTab + ".prpRV_ReportPath   = [{0}]", .prpRV_ReportPath)

立即窗口中的结果:

   .prpUID_REPORT      = [22]
   dsetCustHeader:  .prpRV_HeaderDSName = [{0}]
   SDS_RptHeader:   .prpRV_HeaderDSId   = [{0}]
   dsetReportContentAll:    .prpRV_ReportDSName = [{0}]
   SDS_RptData:     .prpRV_ReportDSId   = [{0}]
   ssrsFleetCostSummary_FLA.rdlc:   .prpRV_ReportPath   = [{0}]

请注意,第一个调试行正确显示了文本.prpUID_Report = [22]。但是,下一个调试行显示“值”,后跟部分源代码行。似乎替换为{0}是错误的。

有关可能导致此问题的任何线索?我认为调试源代码在语法上是正确的,因为第一行(= [22])按预期工作,但其他行不能。 欢迎您提出意见。

2 个答案:

答案 0 :(得分:4)

  Debug.WriteLine(string,string) method call is different from 
  Debug.WriteLine(string,object[])

这可能是第一个WriteLine语句工作的原因,而其余的不是,因为第二个参数可能是一个字符串。

请查看documentation此处

答案 1 :(得分:1)

您是否尝试过使用明确的String.Format()来查看是否有任何区别?

Diagnostics.Debug.WriteLine(String.Format("{0} .prpUID_REPORT = [{1}]",vbTab, .prpUID_REPORT))
Diagnostics.Debug.WriteLine(String.Format("{0} .prpRV_HeaderDSName = [{1}]",vbTab, .prpRV_HeaderDSName))
` Other code omitted for brevity `

这可能仅仅是Debug.WriteLine()方法的不正确方法调用的问题(即期望数组或对象并且只是接收字符串,这会触发错误的功能)。