.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. VB.NET
  5. VB.NETの構造体の使い方は?クラスとの違いやサンプルも解説!

VB.NETの構造体の使い方は?クラスとの違いやサンプルも解説!

  • VB.NET
  • プログラミング言語
公開日時:   更新日時:
VB.NETの構造体の使い方は?クラスとの違いやサンプルも解説!
基本情報技術者試験の試験対策はこちら>>

「VB.NETの構造体の使い方がよくわからない……」
「具体的な使い方だけでなく、クラスとの違いも知りたいな……」

と思っていませんか?

VB.NETの構造体は、クラス同様覚えておくととても便利です。ただ、使い方が分かりにくく、初めて使う人は苦戦する人が多いです。

そこで今回は、VB.NETの構造体の使い方やサンプルコードについて解説します。クラスとの違いについても解説しているので、ぜひ参考にしてみてくださいね!

プログラマー
VB.NETの構造体って難しそう……。
システム
エンジニア
難しく感じるかもしれませんが、一度使えばすぐに覚えられますよ!

※この記事は、Visual Basicの16.0で動作確認しました。

VB.NETの構造体の使い方は?サンプルコードも紹介!

まず、VB.NETの構造体の使い方について解説します。使い方1つとっても色々あるので、以下3つに分けて解説しますね。

・構造体の宣言・初期化方法
・構造体の値の取得・利用方法
・構造体のコピー方法

1つずつ詳しく解説しますね。

構造体の宣言・初期化方法

まず、「構造体の宣言・初期化方法」について学んでいきましょう。

構造体を使う上での基礎となるので、しっかり使い方を覚えていきましょう。

使い方は、以下のとおりです。
※下記は、構造体内の変数が2つある場合の書き方です。

「Private Structure 構造体名 ~ End Structure」までの間で、構造体を定義しています。

構造体はただ変数を用意するだけでなく、値をセットするメソッドを用意するのが一般的です。そのため、「set構造体名」の名前で、変数に値をセットするメソッドも用意しています。

ただこれだけだと、使い方のイメージが湧かない方もいるのではないでしょうか。具体的な使い方を解説するために、サンプルコードを用意しました。

「Private Structure Users ~ End Structure」の中で、構造体名「Users」の定義をしています。Usersの中では、UserID、Name、Ageの3つの変数と、値をセットするためのメソッド「setUsers」を用意しています。

実際に構造体を利用するときは、Mainメソッドで「Dim sUsers As Users」のように宣言しています。宣言後、初期化するために「sUsers.setUsers(“A0001”, “テストユーザ1”, 24)」を書いています。

「sUsers.setUsers(“A0001”, “テストユーザ1”, 24)」では、UserIDに「A0001」、Nameに「テストユーザ」、Ageに「24」を入れています。

構造体の値の取得・利用方法

次に、宣言した構造体の値を取得して利用する方法を覚えていきましょう。

先ほど宣言した構造体を使って、以下のように値を利用できます。

使い方:

先ほど解説したサンプルに追記したサンプルコードは、以下のとおりです。

実行結果:

初期化時にセットした値が、「sUsers.UserID」「sUsers.Name」「sUsers.Age」でそれぞれ取得できていますよね。

このように、セットした値を取得し、簡単に利用できます。

構造体のコピー方法

構造体は宣言・初期化 + 値の取得・利用方法がわかれば利用できます。ただ、構造体を使った変数を複数用意したいケースはよくあります。

そのため、構造体のコピー方法も覚えておきましょう。

コピー方法は、以下のとおりです。

使い方:

こちらも、先ほどのサンプルコードを用意しました。

実行結果:

「sUsers1.setUsers(“A0001”, “テストユーザ1”, 24)」で、構造体の変数「sUsers1」に初期値をセットしています。

その後、「sUsers2 = sUsers1」で構造体をコピーすることで、「sUsers1」「sUsers2」の結果が同じになっています。このように、簡単に値をコピーできます。

VB.NETの構造体とクラスの違いは?

システム
エンジニア
構造体はクラスと似ているけど、違いはあるのかな…。
プロジェクト
マネージャー
サンプルコードのような使い方だけであれば、あまり違いはありません。ただ、細かいところでいくつか違いがあります!

VB.NET以外の言語を使ったことがある場合、クラスとの違いがよくわからない人も多いのではないでしょうか。

構造体とクラスの違いは、以下のとおりです。

■構造体
・値型
・小規模のデータであれば、処理が早い
・継承、イベントなどができない

■クラス
・参照型
・大規模なデータの場合は、処理が早い
・継承、イベントなどができる

大きな違いは、構造体が「値型」で、クラスが「参照型」である点です。

1つのみ宣言して扱う場合は違いがありませんが、複数宣言して使う場合、結果が変わります。たとえば、コピーした構造体の変数を変更した場合は、以下のようになります。

構造体のサンプル:

実行結果:

この例では、コピー後の構造体「sUsers2」のUserIDを変更しています。そのため、「sUsers1」のUserIDは初期化の値から変わっていません。

ただ、クラスの場合は、以下のようになってしまいます。

実行結果:

クラス名が「cUsers2」の「UserID」のみ変えていますが、クラス名「cUsers1」の「UserID」の値も変わっています。このように、コピーして使用した際の動きが違うのです。

また、構造体の場合は、設定する変数の数が多ければ多いほど処理に時間がかかります。そのため処理速度が遅いと感じたら、クラスへの変更を考えてみると良いでしょう。

VB.NETで構造体以外に複数データを扱う方法はないの?

構造体は複数の型の変数をまとめて利用できるため、とても便利です。

ただ、「慣れるまで扱いにくい……」と感じる人は多いです。そのため、他の方法も覚えておくのがおすすめです。

具体的に言うと、以下2つは覚えておくと良いでしょう。

・配列
・Enum

配列は、変数宣言するだけで、複数の値を管理・利用できる方法です。ただし、型の指定が1つのみなので、複数の型で一括管理したい場合は構造体・クラスを使いましょう。

Enumは構造体のように、別途定義が必要です。また、数値しか扱うことができません。

その代わり、連続した値を簡単に設定ができるため、用途によってはとても便利です。

配列とEnumの使い方については、以下でそれぞれ解説しています。ぜひ参考にしてみてくださいね。

>>> 【VB.NET入門】配列の使い方全まとめ!基礎だけでなく応用も

>>> VB.NETのEnumの使い方は?基礎だけでなく応用テクも解説!

まとめ

今回は、VB.NETの構造体の使い方・サンプルコードについて解説しました。

構造体は複数の型の変数を管理・利用できるため、とても便利です。まずは簡単な構造体を作ってみて、慣れてきたらクラスや配列、Enumなどを学んでいくと良いでしょう。

簡単なコードからでいいので、ぜひコードを書いてみてくださいね!

FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムロゴ

株式会社オープンアップシステムはこんな会社です

秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

秋葉原オフィスイメージ
  • スマホアプリから業務系システムまで

    スマホアプリから業務系システムまで

    スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

  • 充実した研修制度

    充実した研修制度

    毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

  • 資格取得を応援

    資格取得を応援

    スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

  • 東証プライム上場企業グループ

    東証プライム上場企業グループ

    オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

    安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

株式会社オープンアップシステムに興味を持った方へ

株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

株式会社オープンアップシステムへのご応募はこちら↓
株式会社オープンアップシステムへのご応募はこちら↓

新着案件New Job