В чем разница между `?` И `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)]}
...
Я явно хотел!