2

VB.NETで「as any」を宣言するにはどうすればよいですか、または同等のものは何ですか?

4

5 に答える 5

4

あなたが得ることができる最も近いものは:

Dim var as Object

これは、VB6のAny(Variantに値を格納する)とまったく同じではありませんが、ボックス化されていても、任意のタイプの変数をObjectとして格納できます。

于 2008-09-16T07:58:35.300 に答える
3

VB.NETはasanyキーワードをサポートしていません。VB.NETは強く型付けされた言語ですが、(。NET 3.5では)VBで暗黙的な型付けを使用できます。

Dim fred = "Hello World"は、文字列変数としてfredを暗黙的に入力します。設計時にタイプがわからない値を単純に保持したい場合は、変数をオブジェクト(すべてのオブジェクトの母)として宣言するだけです。注:これは通常、コードレビュー担当者にとっては危険信号です。あなたには準備ができている正当な理由があります:-)

于 2008-09-16T08:03:33.183 に答える
3

As Any は、変数宣言では使用できないため、Windows API 宣言を参照する必要があります。オーバーロードを使用できます。渡したいデータ型ごとに宣言を繰り返すだけです。VB.NET は、呼び出しで渡した引数に一致するものを選択します。

これは、コンパイラが引き続き型チェックを実行できるため、VB6 の As Any よりも優れています。

于 2008-09-17T11:38:26.730 に答える
1

WinAPI 宣言の変換に問題があると思います。変数を文字列または整数として宣言するだけで、それが返される値の実際の型であるため、回避できる場合があります。

マーシャリングを試すこともできます。

<MarshalAsAttribute(UnmanagedType.AsAny)> ByRef buff As Object
于 2008-09-16T12:40:43.827 に答える
0

VB.NETは "As Any" キーワードをサポートしていません。タイプを明示的に指定する必要があります。

于 2008-09-16T07:54:31.037 に答える