No.1ベストアンサー
- 回答日時:
例としてふさわしいかはわかりませんが
社員情報を扱う場合、
Name(i)
tel(i)
・・・
の様に項目を別々に変数として持つよりも
たとえば Syain という structure を作成して
その要素として、Name, tel ・・・を作成します。
使用する時は
Syain(i).Name
Syain(i).tel
のように書きます。
同じ structure 同士であれば、
代入は Syain(1) = Syain(2)
の様に要素をまとめて代入ができます。
決まったデータの組み合わせを繰り返し使用する場合に記述が簡単になります。
さらに、VB.NET 2005 からは 演算子のオーバーライドが
使えますので、structure 同士の演算を定義すれば、
複雑な演算が簡単に記述できる様になります。
たとえば 少しマニアックですが、
数学で使用するベクトルの structure を作成して
要素を x, y, z などとして、演算の定義をすれば、普通に書けば成分ごとに計算の記述をしなければいけないところが
VectorC = VectorA + VectorB
なんて、簡単に書くことができたりします。
No.2
- 回答日時:
>Structure
StructureでWEB照会すると、質問者が聞いているような事があまり出ない。Structureは一般的な用途で沢山使われるから。
「構造体」で照会すれば、(132万件も?)沢山でてくる。
このコーナーに質問するまでも無いように思います。
あとVB.NETを加えて照会すると良い。
ーー
コンピュター内のメモリのデータとして
(1)単一項目。その個々の寄せ集まり(1変数とその結果としての集合)
まとめて考え出すと
(2)配列
(3)構造体
(4)構造体の配列
(5)構造体をメンバにする構造体(メンバは後述)
それに
ーー
配列では同じ型のデータしかまとめて扱う事はできません。(ただ
ポインタを使わせる言語だとこの意味も怪しい?)
異なる型のデータをまとめて扱いたい場合がある。まとめた個々のデータをメンバという。
例えば社員データで氏名、年齢、生年月日、住所などです。
まとめて記述するだけなら、40年も前の言語コボルの時代から、レコード定義として、異なる型のデータを扱ってきました。MSのBasicではそういう考えが遅れていたようですが、他社のBASICではレコード定義ができました。他の旧い言語PascalやAdaのレコード型も構造体に相当する(ウイキより)。VBではまたVisual Basicのユーザー定義型がその前身でしょうか。このデータ型の構造体や類似概念は、常識的で、色々な言語に取り入れられて、旧い歴史のあるものです。
ウイキの「C・C++などでサポートされている。オブジェクト指向言語では、より純粋なオブジェクト指向を目指して削除されることも多い。構造体がない言語では、クラスで代用される。逆にオブジェクト指向言語でないCなどでオブジェクト指向プログラミングを模倣するために構造体を使うこともある。標準ライブラリのFILE型がその典型的な例である。」は似ている概念だが、厳密には違うものがあるということ。
別方向から「クラス」という概念が絡んできているということがあります。
ーー
VBにおける構造体
VB6まではTypeキーワードで構造体を宣言していましたが、VB.NETではStructureキーワードで構造体を宣言します。構造体はクラスに似ていますが、クラスと違い整数や実数などと同じ値型(クラスは参照型)です。つまり、New演算子でインスタンス化せずに使用 します。
(WEBより引用)
ーー
最も重要な相違点は、VB 6ではTypeキーワードを用いているのに対して、VB.NETではStructureキーワードを用いている点である。Typeステートメントは、単なるユーザー定義型の定義手段でしかなかったが、構造体は、クラスとほぼ同等の機能を持つ。つまり、構造体の中にメンバ変数としてデータを保存することもできれば、メソッドなどのコードを組み込むこともできる。上記のサンプル・ソースでは、setPersonというメソッドを、構造体の中に組み込み可能であることを示している。(WEB照会より引用)
データ項目だけでなくメソッドまでも組み入れるまでに拡張されてきている。
ーー
そして、構造体で話題にされることは
(1)構造体の宣言方法
(2)構造体の初期化(プログラム実行開始前時に希望の値にセット)
(3)メンバの参照
構造体変数名. メンバ名」のようにピリオド(.)を用いて指定する。
(4)構造体の一括代入
(5)構造体同士の演算
(4)(5)は、これが便利な場合がある。
(6)構造体の入れ子
(7)関数に構造体を渡す、受け取る
(8)リスト構造体
ーー
構造体という考え方に関して、言語の特徴・進化を考えるとき
次ぎの点を縦糸・横糸にして考えることになると思う。
単から複へ
非クラスからクラス化
他の技法を使っての相乗効果(#1ご回答で言及のあるオーバーライドも例)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 量を"size"で表現することの可否等について 1 2022/12/07 14:49
- その他(教育・科学・学問) シンプルと複雑の違い 1 2022/08/12 13:31
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- 仕事術・業務効率化 文書作成の際の書体や書式について 1 2022/08/29 10:01
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- Visual Basic(VBA) VB.netのコンテナークラスとはなんですか 2 2023/07/22 03:54
- Visual Basic(VBA) i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い 2 2022/04/06 10:04
- Visual Basic(VBA) ExcelデータをVB.netで検索する方法 2 2023/02/17 15:41
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
プログラミング言語の変数と数...
-
値が変わるのはどうしてでしょ...
-
値が代入されてない時
-
VB6.0の変数、関数の定義位置か...
-
VBAの変数のデータ型を変更する...
-
long型のデータをバイト型の配...
-
C言語 構造体の中に共用体を定...
-
整数から16進数への変換 現在c...
-
ヘッダファイルと構造体
-
構造体の代入と比較
-
winsockのsendtoで送れるデータ型
-
C++ 構造体の一括初期化 {0}
-
構造体のポインタにNULLが入らない
-
セグメントエラー
-
関数から配列を返すには?
-
ExcelVBAで質問です。離れた二...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
long型のデータをバイト型の配...
-
「#undef」と「#define」の使い...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
C言語 構造体の中に共用体を定...
-
値が代入されてない時
-
異なる構造体のデータのコピー
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
charとucharの違い
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
VB.NETのStructureというのはど...
-
構造体を型の異なる構造体に代入
-
日付チェック関数について
-
ユーザー定義型変数の一括初期化
-
構造体の初期化方法について
おすすめ情報