Объявление Visual Basic 6.0 для VB.NET - PullRequest
2 голосов
/ 16 сентября 2008

Как мне объявить «как любой» в VB.NET, или что эквивалентно?

Ответы [ 5 ]

3 голосов
/ 17 сентября 2008

As Any должен ссылаться на объявления API Windows, поскольку его нельзя использовать в объявлениях переменных. Вы можете использовать перегрузку: просто повторите объявления для каждого типа данных, которые вы хотите передать. VB.NET выбирает тот, который соответствует аргументу, который вы передаете в своем вызове.

Это лучше, чем As Any было в VB6, потому что компилятор все еще может выполнять проверку типов.

3 голосов
/ 16 сентября 2008

Ближайшее, что вы можете получить:

Dim var as Object

Это не совсем то же самое, что VB6, как Any (который хранит значения в варианте), но вы можете хранить переменные любого типа как Object, хотя и в штучной упаковке.

3 голосов
/ 16 сентября 2008

VB.NET не поддерживает как любое ключевое слово, VB.NET - строго типизированный язык, однако вы можете (с .NET 3.5) использовать неявную типизацию в VB

Dim fred = "Hello World" будет неявно печатать fred как строковую переменную. Если вы хотите просто сохранить значение, тип которого вы не знаете во время разработки, вы можете просто объявить свою переменную как объект (мать всех объектов). ПРИМЕЧАНИЕ. Обычно это красный флаг для рецензентов кода, поэтому убедитесь, что у вас есть веская причина готова: -)

1 голос
/ 16 сентября 2008

Полагаю, у вас проблемы с преобразованием объявлений WinAPI. Иногда вы можете уйти, если просто объявите свою переменную как строку или целое число, потому что это реальный тип возвращаемого значения.

Вы также можете попробовать маршалинг:

<MarshalAsAttribute(UnmanagedType.AsAny)> ByRef buff As Object
0 голосов
/ 16 сентября 2008

VB.NET не поддерживает ключевое слово "как угодно". Вам нужно будет явно указать тип.

...