VB.NETで「as any」を宣言するにはどうすればよいですか、または同等のものは何ですか?
5 に答える
あなたが得ることができる最も近いものは:
Dim var as Object
これは、VB6のAny(Variantに値を格納する)とまったく同じではありませんが、ボックス化されていても、任意のタイプの変数をObjectとして格納できます。
VB.NETはasanyキーワードをサポートしていません。VB.NETは強く型付けされた言語ですが、(。NET 3.5では)VBで暗黙的な型付けを使用できます。
Dim fred = "Hello World"は、文字列変数としてfredを暗黙的に入力します。設計時にタイプがわからない値を単純に保持したい場合は、変数をオブジェクト(すべてのオブジェクトの母)として宣言するだけです。注:これは通常、コードレビュー担当者にとっては危険信号です。あなたには準備ができている正当な理由があります:-)
As Any は、変数宣言では使用できないため、Windows API 宣言を参照する必要があります。オーバーロードを使用できます。渡したいデータ型ごとに宣言を繰り返すだけです。VB.NET は、呼び出しで渡した引数に一致するものを選択します。
これは、コンパイラが引き続き型チェックを実行できるため、VB6 の As Any よりも優れています。
WinAPI 宣言の変換に問題があると思います。変数を文字列または整数として宣言するだけで、それが返される値の実際の型であるため、回避できる場合があります。
マーシャリングを試すこともできます。
<MarshalAsAttribute(UnmanagedType.AsAny)> ByRef buff As Object
VB.NETは "As Any" キーワードをサポートしていません。タイプを明示的に指定する必要があります。