В чем разница между `?` И `Debug.Print` в окне VB.Net?

Может кто-нибудь объяснить следующее немедленное поведение окна:

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

Знак вопроса (?) Является псевдонимом для Debug.Print

Это явно не на 100% верно, так как в приведенном выше примере два утверждения демонстрируют различное поведение. Если это имеет какое-то значение, я использую Express Edition VB 2008.

2 ответа

Решение

Существует разница между методом Debug.Print и командой Debug.Print.

Команды обычно вводятся в Command.Window. Для ввода команд в окне Immediate вам необходимо добавить> перед названием команды так:

?mDb.DatabaseOptions

это псевдоним для команды:

>Debug.Print mDb.DatabaseOptions

не псевдоним для вызова метода:

Debug.Print(mDb.DatabaseOptions)

И как нам заставить "Метод" вести себя как команда? У меня есть переменная, как

Dictionary<string, Tuple<string, string, string, string>> results

Debug.Print(результаты) возвращает

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)]}
    ...

Я явно хотел!

Другие вопросы по тегам