VB.Net立即窗口中`?`和`Debug.Print`有什么区别?

时间:2012-01-23 15:33:28

标签: vb.net smo

任何人都可以解释以下即时窗口行为:

Debug.Print mDb.DatabaseOptions
Method arguments must be enclosed in parentheses.

Debug.Print(mDb.DatabaseOptions)
Value of type 'DatabaseOptions' cannot be converted to 'String'.

? mDb.DatabaseOptions
{Microsoft.SqlServer.Management.Smo.DatabaseOptions}
    AnsiNullDefault: False
    ...
    UserData: Nothing

根据MS documentation

  

问号(?)是Debug.Print

的别名

这显然不是100%正确,因为这两个陈述在上面的例子中表现出不同的行为。如果它有所不同,我使用的是VB 2008的Express Edition。

2 个答案:

答案 0 :(得分:1)

Debug.Print 方法与Debug.Print 命令之间存在差异。

命令通常在Command.Window中输入。要在立即窗口中输入命令,您需要附加>在命令名之前:

?mDb.DatabaseOptions

是命令的别名:

>Debug.Print mDb.DatabaseOptions

不是调用方法的别名:

Debug.Print(mDb.DatabaseOptions)

答案 1 :(得分:1)

我们如何让“方法”表现得像命令一样? 我有一个像

这样的变量
Dictionary<string, Tuple<string, string, string, string>> results

Debug.Print(results)返回

System.Collections.Generic.Dictionary`2[System.String,System.Tuple`4[System.String,System.String,System.String,System.String]]

...而

?results
    [0]: {[stringKey, (stringT1, stringT2, stringT3, stringT4)]}
    [1]: {[stringKey, (stringT1, stringT2, stringT3, stringT4)]}
    ...

我显然想要!