次の方法で共有


User-Defined データ型

定義した形式でデータを保持します。 Structure ステートメントは形式を定義します。

以前のバージョンの Visual Basic では、ユーザー定義型 (UDT) がサポートされています。 現在のバージョンでは、UDT が構造体に拡張 されます。 構造体は、さまざまなデータ型の 1 つ以上の メンバー を連結したものです。 Visual Basic では構造体が 1 つの単位として扱われますが、そのメンバーに個別にアクセスすることもできます。

注釈

さまざまなデータ型を 1 つの単位に結合する必要がある場合、または基本データ型がニーズに対応していない場合は、構造体データ型を定義して使用します。

構造体データ型の既定値は、各メンバーの既定値の組み合わせで構成されます。

宣言形式

構造体宣言は Structure ステートメント で始まり、 End Structure ステートメントで終わります。 Structure ステートメントは構造体の名前を提供します。これは、構造体が定義しているデータ型の識別子でもあります。 コードの他の部分では、この識別子を使用して、変数、パラメーター、関数の戻り値をこの構造体のデータ型として宣言できます。

Structureステートメントと End Structure ステートメントの間の宣言によって、構造体のメンバーが定義されます。

メンバー アクセス レベル

Dim ステートメントまたはアクセス レベルを指定するステートメント (PublicFriendPrivate など) を使用して、すべてのメンバーを宣言する必要があります。 Dim ステートメントを使用する場合、アクセス レベルは既定でパブリックになります。

プログラミングのヒント

  • メモリ消費量。 すべての複合データ型と同様に、構造体のメンバーのわずかなストレージ割り当てを加算して、構造体の合計メモリ消費量を安全に計算することはできません。 さらに、メモリ内のストレージの順序が宣言の順序と同じであると安全に想定することはできません。 構造体のストレージ レイアウトを制御する必要がある場合は、 StructLayoutAttribute 属性を Structure ステートメントに適用できます。

  • 相互運用に関する考慮事項。 オートメーションや COM オブジェクトなど、.NET Framework 用に記述されていないコンポーネントとやり取りする場合は、他の環境のユーザー定義型は Visual Basic 構造体型と互換性がない点に注意してください。

  • 拡大。 構造体データ型に対する自動変換または構造体データ型からの自動変換はありません。 Operator ステートメントを使用して構造体に変換演算子を定義し、各変換演算子をWideningまたはNarrowingとして宣言できます。

  • 文字を入力します。 構造体データ型には、リテラル型文字または識別子型文字がありません。

  • フレームワークの種類。 .NET Framework には対応する型がありません。 すべての構造体は System.ValueType .NET Framework クラスから継承されますが、 System.ValueTypeに対応する個々の構造体はありません。

次のパラダイムは、構造体の宣言の概要を示しています。

[Public | Protected | Friend | Protected Friend | Private] Structure structname
    {Dim | Public | Friend | Private} member1 As datatype1
    ' ...
    {Dim | Public | Friend | Private} memberN As datatypeN
End Structure

こちらも参照ください