カテゴリ: VB.NET 更新日: 2026/02/04

VB.NETの匿名型を徹底解説!コレクションで使いこなす初心者ガイド

VB.NETでコレクションに匿名型を使う方法
VB.NETでコレクションに匿名型を使う方法

先生と生徒の会話形式で理解しよう

生徒

「先生、データをまとめて管理したいのですが、わざわざ新しい『クラス』という設計図を作るのが少し面倒に感じてしまいます。もっと手軽に、その場限りのデータセットを作る方法はありませんか?」

先生

「ありますよ!VB.NETには『匿名型(とくめいがた)』という、名前のない便利な型を作る機能があります。これを使えば、設計図なしでデータを一まとめにできるんです。」

生徒

「名前がないのに使えるんですか?なんだか不思議ですね。具体的にどうやって使うのか教えてください!」

先生

「匿名型は、特にコレクションと一緒に使うと非常に強力です。初心者の方でも分かりやすいように、基本からじっくり解説していきますね!」

1. 匿名型(Anonymous Types)とは?

1. 匿名型(Anonymous Types)とは?
1. 匿名型(Anonymous Types)とは?

VB.NETの匿名型とは、一言で言うと「名前を付けるまでもない、その場限りの使い捨てデータ型」のことです。通常、プログラミングで「名前」と「年齢」というデータを一つのセットにしたい場合、まず「人間クラス」という設計図を作る必要があります。

しかし、「この処理の中で一回だけ使いたいだけなのに、わざわざ新しいファイルを作って設計図を書くのは大変だな」と思うことがあります。そこで登場するのが匿名型です。 New Withというキーワードを使うことで、設計図なしにその場で「名前」や「値」を持ったデータの塊を生み出すことができます。

2. 匿名型の書き方の基本

2. 匿名型の書き方の基本
2. 匿名型の書き方の基本

まずは、一番シンプルな匿名型の作り方を見てみましょう。パソコンを触ったことがない方でも大丈夫です。以下のコードは、一人の「商品」の情報を、設計図なしで作る例です。


' 名前が「りんご」、価格が「150」というデータをその場で作ります
Dim product = New With { .Name = "りんご", .Price = 150 }

' 作ったデータの中身を使ってみましょう
Console.WriteLine("商品名: " & product.Name)
Console.WriteLine("価格: " & product.Price & "円")

実行結果は以下の通りです。


商品名: りんご
価格: 150円

ここでポイントなのは、productという箱の中に.Name.Priceという項目が自動で作られている点です。これが匿名型の魔法です。

3. コレクションと匿名型を組み合わせる理由

3. コレクションと匿名型を組み合わせる理由
3. コレクションと匿名型を組み合わせる理由

匿名型が本当の意味で輝くのは、コレクション(配列やリストなどのデータの集まり)と一緒に使う時です。 例えば、100人の顧客データが入った大きなリストから、「名前と電話番号だけ」を抜き出して新しいリストを作りたいとします。

この「抜き出した後の形」をわざわざ定義するのは面倒ですが、匿名型を使えば、必要な項目だけをサッとまとめたコレクションを簡単に作ることができます。 プログラムをスッキリさせ、開発のスピードを上げるための必須テクニックと言えるでしょう。

4. 配列の中で匿名型を使う方法

4. 配列の中で匿名型を使う方法
4. 配列の中で匿名型を使う方法

複数の匿名型をまとめて扱うには、配列の形にするのが一般的です。以下のサンプルコードでは、複数のユーザー情報を匿名型の配列として管理しています。


' 匿名型の配列を作成します
Dim users = {
    New With { .ID = 1, .UserName = "田中" },
    New With { .ID = 2, .UserName = "佐藤" },
    New With { .ID = 3, .UserName = "鈴木" }
}

' ループ処理(For Each)で順番に表示してみましょう
For Each u In users
    Console.WriteLine("ID:" & u.ID & " 名前:" & u.UserName)
Next

実行結果は以下の通りです。


ID:1 名前:田中
ID:2 名前:佐藤
ID:3 名前:鈴木

設計図がないのに、複数のデータをまるで「表」のように綺麗に管理できていることがわかりますね。

5. 匿名型のプロパティと型推論

5. 匿名型のプロパティと型推論
5. 匿名型のプロパティと型推論

匿名型を使う上で欠かせないのが型推論(かたすいろん)という仕組みです。 通常、変数を宣言するときには「これは数字です」「これは文字です」と教える必要がありますが、匿名型の場合はパソコン側が「あ、右側に入っているのは文字列だから、この項目は文字型だな」と自動的に判断してくれます。

これを実現しているのが、Dimの後に型を書かない書き方です。パソコンが賢く判断してくれるおかげで、私たちは「何という名前の項目に、何をいれるか」だけに集中すれば良いのです。

6. 読み取り専用(ReadOnly)という特性

6. 読み取り専用(ReadOnly)という特性
6. 読み取り専用(ReadOnly)という特性

匿名型で作られたデータには、一つ大切なルールがあります。それは、一度決めたら後から値を書き換えることができない(基本的には読み取り専用)という点です。

例えば、product.Price = 200 のように途中で値段を変更しようとするとエラーになります。もし値を変更したい場合は、匿名型を作る時に Key というキーワードを付けるか、素直に「クラス」を定義する必要があります。初心者のうちは、「匿名型は表示や計算に使うための使い捨てデータ」と覚えておくと安心です。

7. LINQ(リンク)との強力な連携

7. LINQ(リンク)との強力な連携
7. LINQ(リンク)との強力な連携

VB.NETの便利な機能である「LINQ」を使うとき、匿名型は最強の相棒になります。 LINQは大量のデータから条件に合うものを探す機能ですが、その結果を「名前と合計金額だけ」のような新しい形に整えるときに匿名型が使われます。


' 元になるデータリスト
Dim scores = New List(Of Integer) From { 80, 95, 60 }

' LINQを使って、点数とその評価をセットにした匿名型を作る
Dim report = From s In scores
             Select New With { .Point = s, .IsPassed = (s >= 80) }

For Each r In report
    Dim status As String = If(r.IsPassed, "合格", "不合格")
    Console.WriteLine("点数: " & r.Point & " 判定: " & status)
Next

実行結果は以下の通りです。


点数: 80 判定: 合格
点数: 95 判定: 合格
点数: 60 判定: 不合格

このように、元のデータにはなかった「合格・不合格」という新しい項目を、その場で作って追加することができるのです。

8. 匿名型を使うときの注意点と限界

8. 匿名型を使うときの注意点と限界
8. 匿名型を使うときの注意点と限界

とても便利な匿名型ですが、何でもかんでもこれにすれば良いというわけではありません。 匿名型は「そのプログラムのファイル内」でしか型として認識されません。 別の関数にデータを渡したり、画面をまたいでデータを共有したりする場合には、匿名型は使えません。

大きなシステムを作る際、何度も繰り返し使うような重要なデータは、やはりしっかりと「クラス」という設計図を作ってあげるのが正解です。 「ちょっとした集計」や「一時的な表示用」には匿名型、「アプリの核となるデータ」にはクラス、という使い分けを意識しましょう。

9. 初心者が匿名型をマスターするコツ

9. 初心者が匿名型をマスターするコツ
9. 初心者が匿名型をマスターするコツ

まずは「New With { .項目名 = 値 }」という呪文を丸暗記して、実際に動かしてみることから始めましょう。 プログラミング未経験の方は、エラーが出ることを恐れずに、項目を増やしたり減らしたりして遊んでみてください。

パソコンの中でデータがどのようにまとまり、どのように取り出されるのかを体感することが、上達への最短距離です。 匿名型を使いこなせるようになると、書くべきコードの量が減り、プログラムがどんどん楽しくなっていきますよ!

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NETのクロスサイトスクリプティング(XSS)を完全解説!初心者でもわかる仕組みと対策
New2
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
New3
ASP.NET
ASP.NETのセキュリティ対策を完全ガイド!初心者でもわかるXSS・CSRF・SQLインジェクションの基本
New4
VB.NET
VB.NETで文字列を検索する方法をマスター!IndexOfとContainsの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのコレクション操作でよくあるエラーと解決策!初心者向けトラブル脱出ガイド
No.2
Java&Spring記事人気No2
VB.NET
VB.NETで文字列を連結する方法を完全ガイド!&演算子とString.Concatの使い方
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの文字列操作を完全ガイド!初心者が覚えるべき基本と宣言方法
No.5
Java&Spring記事人気No5
ASP.NET
ASP.NETの認証と認可の違いを完全解説!初心者でもわかるOAuth・JWT・Azure ADの基本
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NET MVCでセッションを使う方法を完全解説!初心者でもわかる状態管理入門
No.7
Java&Spring記事人気No7
VB.NET
VB.NETでコレクションをソートする方法を完全ガイド!並び替えの基本
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NETの認証の仕組みを完全解説!初心者でもわかるログインの基本