Как объявить "как любое" в VB.NET или что-то подобное?
VB.NET не поддерживает ключевое слово «As Any». Вам нужно будет явно указать тип.
Самое близкое, что вы можете получить, это:
Dim var as Object
Это не совсем то же самое, что и VB6 as Any (который хранит значения в Variant), но вы можете хранить переменные любого типа как Object, хотя и в коробке.
VB.NET не поддерживает ключевое слово as any, VB.NET - это строго типизированный язык, однако вы можете (с .NET 3.5) использовать неявную типизацию в VB.
Dim fred = "Hello World" неявно введет fred как строковую переменную. Если вы хотите просто сохранить значение, тип которого вам неизвестен во время разработки, вы можете просто объявить свою переменную как объект (мать всех объектов) .ПРИМЕЧАНИЕ, это обычно красный флаг для рецензентов кода, поэтому убедитесь, что у вас есть веская причина :-)
Я полагаю, у вас проблемы с преобразованием объявлений WinAPI. Иногда вы можете уйти, если просто объявите свою переменную как строку или целое число, потому что это реальный тип возвращаемого значения.
Вы также можете попробовать маршалинг:
<MarshalAsAttribute(UnmanagedType.AsAny)> ByRef buff As Object
As Any должен относиться к объявлениям Windows API, поскольку его нельзя использовать в объявлениях переменных. Вы можете использовать перегрузку: просто повторите объявления для каждого типа данных, который вы хотите передать. VB.NET выбирает тот, который соответствует аргументу, который вы передаете в своем вызове.
Это лучше, чем было в VB6, потому что компилятор все еще может выполнять проверку типов.
Если у вас включен Option Strict, вам необходимо указать тип при объявлении переменной.