構文<SerializableAttribute> _ Public NotInheritable Class Collection Implements ICollection, IList, ISerializable, IDeserializationCallback
[SerializableAttribute] public sealed class Collection : ICollection, IList, ISerializable, IDeserializationCallback
[SerializableAttribute] public ref class Collection sealed : ICollection, IList, ISerializable, IDeserializationCallback
解説詳細については、Visual Basic のトピック「Collection オブジェクト (Visual Basic)」を参照してください。
Visual Basic の Collection オブジェクトは、関連する項目のグループを 1 つのオブジェクトとして参照する場合に便利です。コレクション内の項目、つまり要素に必要な関連性は、コレクション内に存在しているという事実だけです。コレクションの要素は同じデータ型である必要はありません。
次の例に示すように、他のオブジェクトの作成と同じ方法でコレクションを作成できます。
For Each...Next ステートメント (Visual Basic) で、コレクション全体を反復処理する。
注意 |
|---|
| Visual Basic の Collection の反復処理は、スレッド セーフな処理ではありません。コレクションの同期がとられている場合でも、別のスレッドによってそのコレクションを変更できるため、変更の結果として列挙子は例外をスローします。列挙の処理をスレッド セーフにするには、コレクションをロックする方法と、別のスレッドによる変更で発生した例外をキャッチする方法があります。プログラミング要素のロックの詳細については、「SyncLock ステートメント」を参照してください。 |
使用例次の例では、Collection オブジェクト (names) と、ユーザーがオブジェクト (名前) をコレクションに追加するためのダイアログ ボックスを作成しています。さらにコレクション内の名前を表示し、最後に Collection オブジェクト自体を破棄しないでコレクションを空にします。
この例がどのように動作するかを確認するには、[プロジェクト] メニューの [クラスの追加] コマンドをクリックし、各インスタンスの名前を保持する変数として instanceName という名前のパブリック変数を nameClass のモジュール レベルで宣言します (Public instanceName と入力)。既定の名前は nameClass のままです。次のコードをコピーして別のモジュールの全般セクションに貼り付けて、別のプロシージャでそのモジュールを classNamer ステートメントで開始します。この例は、クラスをサポートするホスト アプリケーションでのみ動作します。
Public Class nameClass Public instanceName As String End Class Sub classNamer() ' Create a Visual Basic Collection object. Dim names As New Microsoft.VisualBasic.Collection() Dim key As Integer Dim msg As String Dim name As String Dim nameList As String = "" ' 1. Get names from the user to add to the collection. Do Dim inst As New nameClass() key += 1 msg = "Please enter a name for this object." & vbCrLf _ & "Press Cancel to see names in collection." name = InputBox(msg, "Name the Collection items") inst.instanceName = name ' If user entered a name, add it to the collection. If inst.instanceName <> "" Then names.Add(inst, CStr(key)) End If Loop Until name = "" ' 2. Create and display a list of names from the collection. For Each oneInst As nameClass In names nameList &= oneInst.instanceName & vbCrLf Next oneInst MsgBox(nameList, , "Instance Names in names Collection") ' 3. Remove elements from the collection without disposing of the collection. For count As Integer = 1 To names.Count names.Remove(1) ' Since Visual Basic collections are reindexed automatically, ' remove the first member on each iteration. Next count End Sub
継承階層
スレッド セーフ
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
構文
解説
使用例Collection が備える多数のプロパティとメソッドを使用した例を次に示します。このコード例では、Collection コンストラクタで文字列のコレクションを作成し、Add メソッドを使用していくつかの文字列を追加し、Count を表示して、文字列を一覧表示します。IndexOf メソッドを使用して文字列のインデックスを検索し、Contains メソッドを使用して文字列がコレクションにあるかどうかを判断します。Insert メソッドを使用して文字列を挿入し、既定の Item プロパティ (C# の場合はインデクサ) を使用して文字列を取得および設定します。文字列 ID による文字列の削除のために Remove メソッドを使用し、インデックスによる文字列の削除のために RemoveAt メソッドを使用します。最後に、Clear メソッドを使用してコレクションのすべての文字列をクリアします。
Imports System Imports System.Collections.Generic Imports System.Collections.ObjectModel Public Class Demo Public Shared Sub Main() Dim dinosaurs As New Collection(Of String) dinosaurs.Add("Psitticosaurus") dinosaurs.Add("Caudipteryx") dinosaurs.Add("Compsognathus") dinosaurs.Add("Muttaburrasaurus") Console.WriteLine("{0} dinosaurs:", dinosaurs.Count) Display(dinosaurs) Console.WriteLine(vbLf & "IndexOf(""Muttaburrasaurus""): {0}", _ dinosaurs.IndexOf("Muttaburrasaurus")) Console.WriteLine(vbLf & "Contains(""Caudipteryx""): {0}", _ dinosaurs.Contains("Caudipteryx")) Console.WriteLine(vbLf & "Insert(2, ""Nanotyrannus"")") dinosaurs.Insert(2, "Nanotyrannus") Display(dinosaurs) Console.WriteLine(vbLf & "dinosaurs(2): {0}", dinosaurs(2)) Console.WriteLine(vbLf & "dinosaurs(2) = ""Microraptor""") dinosaurs(2) = "Microraptor" Display(dinosaurs) Console.WriteLine(vbLf & "Remove(""Microraptor"")") dinosaurs.Remove("Microraptor") Display(dinosaurs) Console.WriteLine(vbLf & "RemoveAt(0)") dinosaurs.RemoveAt(0) Display(dinosaurs) Console.WriteLine(vbLf & "dinosaurs.Clear()") dinosaurs.Clear() Console.WriteLine("Count: {0}", dinosaurs.Count) End Sub Private Shared Sub Display(ByVal cs As Collection(Of String)) Console.WriteLine() For Each item As String In cs Console.WriteLine(item) Next item End Sub End Class ' This code example produces the following output: ' '4 dinosaurs: ' 'Psitticosaurus 'Caudipteryx 'Compsognathus 'Muttaburrasaurus ' 'IndexOf("Muttaburrasaurus"): 3 ' 'Contains("Caudipteryx"): True ' 'Insert(2, "Nanotyrannus") ' 'Psitticosaurus 'Caudipteryx 'Nanotyrannus 'Compsognathus 'Muttaburrasaurus ' 'dinosaurs(2): Nanotyrannus ' 'dinosaurs(2) = "Microraptor" ' 'Psitticosaurus 'Caudipteryx 'Microraptor 'Compsognathus 'Muttaburrasaurus ' 'Remove("Microraptor") ' 'Psitticosaurus 'Caudipteryx 'Compsognathus 'Muttaburrasaurus ' 'RemoveAt(0) ' 'Caudipteryx 'Compsognathus 'Muttaburrasaurus ' 'dinosaurs.Clear() 'Count: 0
using System; using System.Collections.Generic; using System.Collections.ObjectModel; public class Demo { public static void Main() { Collection<string> dinosaurs = new Collection<string>(); dinosaurs.Add("Psitticosaurus"); dinosaurs.Add("Caudipteryx"); dinosaurs.Add("Compsognathus"); dinosaurs.Add("Muttaburrasaurus"); Console.WriteLine("{0} dinosaurs:", dinosaurs.Count); Display(dinosaurs); Console.WriteLine("\nIndexOf(\"Muttaburrasaurus\"): {0}", dinosaurs.IndexOf("Muttaburrasaurus")); Console.WriteLine("\nContains(\"Caudipteryx\"): {0}", dinosaurs.Contains("Caudipteryx")); Console.WriteLine("\nInsert(2, \"Nanotyrannus\")"); dinosaurs.Insert(2, "Nanotyrannus"); Display(dinosaurs); Console.WriteLine("\ndinosaurs[2]: {0}", dinosaurs[2]); Console.WriteLine("\ndinosaurs[2] = \"Microraptor\""); dinosaurs[2] = "Microraptor"; Display(dinosaurs); Console.WriteLine("\nRemove(\"Microraptor\")"); dinosaurs.Remove("Microraptor"); Display(dinosaurs); Console.WriteLine("\nRemoveAt(0)"); dinosaurs.RemoveAt(0); Display(dinosaurs); Console.WriteLine("\ndinosaurs.Clear()"); dinosaurs.Clear(); Console.WriteLine("Count: {0}", dinosaurs.Count); } private static void Display(Collection<string> cs) { Console.WriteLine(); foreach( string item in cs ) { Console.WriteLine(item); } } } /* This code example produces the following output: 4 dinosaurs: Psitticosaurus Caudipteryx Compsognathus Muttaburrasaurus IndexOf("Muttaburrasaurus"): 3 Contains("Caudipteryx"): True Insert(2, "Nanotyrannus") Psitticosaurus Caudipteryx Nanotyrannus Compsognathus Muttaburrasaurus dinosaurs[2]: Nanotyrannus dinosaurs[2] = "Microraptor" Psitticosaurus Caudipteryx Microraptor Compsognathus Muttaburrasaurus Remove("Microraptor") Psitticosaurus Caudipteryx Compsognathus Muttaburrasaurus RemoveAt(0) Caudipteryx Compsognathus Muttaburrasaurus dinosaurs.Clear() Count: 0 */
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
構文
解説このコンストラクタによって返された Visual Basic コレクションは空であり、初期量が割り当てられていません。
Visual Basic コレクションには、System.Collections、System.Collections.Generic、および System.Collections.Specialized の各名前空間で使用できる .NET Framework コレクションとの互換性はありません。
使用例新しい Visual Basic コレクションを作成して変数 coll に割り当てる例を次に示します。
この Collection オブジェクトはインデックス番号が 1 から始まるオブジェクトであり、要素のインデックス値は 1 以上 Count プロパティ値以下の範囲です。Visual Basic コレクションは型 Object の要素を保持します。
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
オーバーロードの一覧| 名前 | 説明 |
|---|---|
| Collection () | Collection クラスの新しい空のインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
| Collection (ジェネリック IList) | 指定したリストのラッパーとして Collection クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
参照
構文
例外
解説
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
構文<SerializableAttribute> _ <ComVisibleAttribute(False)> _ Public Class Collection(Of T) Implements IList(Of T), ICollection(Of T), _ IEnumerable(Of T), IList, ICollection, _ IEnumerable
[SerializableAttribute] [ComVisibleAttribute(false)] public class Collection<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
[SerializableAttribute] [ComVisibleAttribute(false)] generic<typename T> public ref class Collection : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
解説Collection クラスは、いずれかの構築型のインスタンスを作成することによってすぐに使用できます。コレクションに含めるオブジェクトの型を指定する以外の操作は必要ありません。また、任意の構築型から固有のコレクション型を派生させることや、Collection クラス自体からジェネリック コレクション型を派生させることもできます。
Collection クラスには、項目を追加および削除するときにコレクションをクリアしたり既存の項目の値を設定するための動作のカスタマイズに使用できるプロテクト メソッドがあります。
Collection インスタンスは常に変更できます。このクラスの読み取り専用バージョンについては、ReadOnlyCollection のトピックを参照してください。
このコレクション内の要素は、整数インデックスを使用してアクセスできます。このコレクションのインデックスは 0 から始まります。
Collection は、null 参照 (Visual Basic では Nothing) を参照型に対して有効な値として受け取り、要素の重複を許可します。
実装時の注意 この基本クラスは、カスタム コレクションを簡単に作成できるように提供されています。実装する場合は、独自のクラスを作成するのではなく、この基本クラスを拡張してください。
使用例このセクションには、2 つのコード例が含まれています。最初の例では、Collection クラスのいくつかのプロパティおよびメソッドの例を示します。2 番目の例では、Collection の構築型からコレクション クラスを派生させる方法、および Collection のプロテクト メソッドをオーバーライドしてカスタム動作を提供する方法を示します。
Collection が備える多数のプロパティとメソッドを使用した例を次に示します。このコード例では、文字列のコレクションを作成し、Add メソッドを使用していくつかの文字列を追加し、Count を表示して、文字列を一覧表示します。IndexOf メソッドを使用して文字列のインデックスを検索し、Contains メソッドを使用して文字列がコレクションにあるかどうかを判断します。Insert メソッドを使用して文字列を挿入し、既定の Item プロパティ (C# の場合はインデクサ) を使用して文字列を取得および設定します。文字列 ID による文字列の削除のために Remove メソッドを使用し、インデックスによる文字列の削除のために RemoveAt メソッドを使用します。最後に、Clear メソッドを使用してコレクションのすべての文字列をクリアします。
Imports System Imports System.Collections.Generic Imports System.Collections.ObjectModel Public Class Demo Public Shared Sub Main() Dim dinosaurs As New Collection(Of String) dinosaurs.Add("Psitticosaurus") dinosaurs.Add("Caudipteryx") dinosaurs.Add("Compsognathus") dinosaurs.Add("Muttaburrasaurus") Console.WriteLine("{0} dinosaurs:", dinosaurs.Count) Display(dinosaurs) Console.WriteLine(vbLf & "IndexOf(""Muttaburrasaurus""): {0}", _ dinosaurs.IndexOf("Muttaburrasaurus")) Console.WriteLine(vbLf & "Contains(""Caudipteryx""): {0}", _ dinosaurs.Contains("Caudipteryx")) Console.WriteLine(vbLf & "Insert(2, ""Nanotyrannus"")") dinosaurs.Insert(2, "Nanotyrannus") Display(dinosaurs) Console.WriteLine(vbLf & "dinosaurs(2): {0}", dinosaurs(2)) Console.WriteLine(vbLf & "dinosaurs(2) = ""Microraptor""") dinosaurs(2) = "Microraptor" Display(dinosaurs) Console.WriteLine(vbLf & "Remove(""Microraptor"")") dinosaurs.Remove("Microraptor") Display(dinosaurs) Console.WriteLine(vbLf & "RemoveAt(0)") dinosaurs.RemoveAt(0) Display(dinosaurs) Console.WriteLine(vbLf & "dinosaurs.Clear()") dinosaurs.Clear() Console.WriteLine("Count: {0}", dinosaurs.Count) End Sub Private Shared Sub Display(ByVal cs As Collection(Of String)) Console.WriteLine() For Each item As String In cs Console.WriteLine(item) Next item End Sub End Class ' This code example produces the following output: ' '4 dinosaurs: ' 'Psitticosaurus 'Caudipteryx 'Compsognathus 'Muttaburrasaurus ' 'IndexOf("Muttaburrasaurus"): 3 ' 'Contains("Caudipteryx"): True ' 'Insert(2, "Nanotyrannus") ' 'Psitticosaurus 'Caudipteryx 'Nanotyrannus 'Compsognathus 'Muttaburrasaurus ' 'dinosaurs(2): Nanotyrannus ' 'dinosaurs(2) = "Microraptor" ' 'Psitticosaurus 'Caudipteryx 'Microraptor 'Compsognathus 'Muttaburrasaurus ' 'Remove("Microraptor") ' 'Psitticosaurus 'Caudipteryx 'Compsognathus 'Muttaburrasaurus ' 'RemoveAt(0) ' 'Caudipteryx 'Compsognathus 'Muttaburrasaurus ' 'dinosaurs.Clear() 'Count: 0
using System; using System.Collections.Generic; using System.Collections.ObjectModel; public class Demo { public static void Main() { Collection<string> dinosaurs = new Collection<string>(); dinosaurs.Add("Psitticosaurus"); dinosaurs.Add("Caudipteryx"); dinosaurs.Add("Compsognathus"); dinosaurs.Add("Muttaburrasaurus"); Console.WriteLine("{0} dinosaurs:", dinosaurs.Count); Display(dinosaurs); Console.WriteLine("\nIndexOf(\"Muttaburrasaurus\"): {0}", dinosaurs.IndexOf("Muttaburrasaurus")); Console.WriteLine("\nContains(\"Caudipteryx\"): {0}", dinosaurs.Contains("Caudipteryx")); Console.WriteLine("\nInsert(2, \"Nanotyrannus\")"); dinosaurs.Insert(2, "Nanotyrannus"); Display(dinosaurs); Console.WriteLine("\ndinosaurs[2]: {0}", dinosaurs[2]); Console.WriteLine("\ndinosaurs[2] = \"Microraptor\""); dinosaurs[2] = "Microraptor"; Display(dinosaurs); Console.WriteLine("\nRemove(\"Microraptor\")"); dinosaurs.Remove("Microraptor"); Display(dinosaurs); Console.WriteLine("\nRemoveAt(0)"); dinosaurs.RemoveAt(0); Display(dinosaurs); Console.WriteLine("\ndinosaurs.Clear()"); dinosaurs.Clear(); Console.WriteLine("Count: {0}", dinosaurs.Count); } private static void Display(Collection<string> cs) { Console.WriteLine(); foreach( string item in cs ) { Console.WriteLine(item); } } } /* This code example produces the following output: 4 dinosaurs: Psitticosaurus Caudipteryx Compsognathus Muttaburrasaurus IndexOf("Muttaburrasaurus"): 3 Contains("Caudipteryx"): True Insert(2, "Nanotyrannus") Psitticosaurus Caudipteryx Nanotyrannus Compsognathus Muttaburrasaurus dinosaurs[2]: Nanotyrannus dinosaurs[2] = "Microraptor" Psitticosaurus Caudipteryx Microraptor Compsognathus Muttaburrasaurus Remove("Microraptor") Psitticosaurus Caudipteryx Compsognathus Muttaburrasaurus RemoveAt(0) Caudipteryx Compsognathus Muttaburrasaurus dinosaurs.Clear() Count: 0 */
このコード例では、Collection ジェネリック クラスの構築型からコレクション クラスを派生させる方法、および InsertItem、RemoveItem、ClearItems、および SetItem の各プロテクト メソッドをオーバーライドして Add、Insert、Remove、および Clear の各メソッドのカスタム動作や、Item プロパティを設定するためのカスタム動作を提供する方法を示します。
この例で提供されるカスタム動作は、Changed という名前の通知イベントです。これは、各プロテクト メソッドの最後で発生します。Dinosaurs クラスは、Collection<string> (Visual Basic の場合は Collection(Of String)) を継承し、Changed イベントを定義します。イベント情報のために DinosaursChangedEventArgs クラスが使用され、変更の種類を識別するために列挙体が使用されます。
次のコード例では、Collection のいくつかのプロパティおよびメソッドを呼び出して、カスタム イベントの例を示します。
Imports System Imports System.Collections.Generic Imports System.Collections.ObjectModel Public Class Dinosaurs Inherits Collection(Of String) Public Event Changed As EventHandler(Of DinosaursChangedEventArgs) Protected Overrides Sub InsertItem( _ ByVal index As Integer, ByVal newItem As String) MyBase.InsertItem(index, newItem) RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _ ChangeType.Added, newItem, Nothing)) End Sub Protected Overrides Sub SetItem(ByVal index As Integer, _ ByVal newItem As String) Dim replaced As String = Items(index) MyBase.SetItem(index, newItem) RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _ ChangeType.Replaced, replaced, newItem)) End Sub Protected Overrides Sub RemoveItem(ByVal index As Integer) Dim removedItem As String = Items(index) MyBase.RemoveItem(index) RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _ ChangeType.Removed, removedItem, Nothing)) End Sub Protected Overrides Sub ClearItems() MyBase.ClearItems() RaiseEvent Changed(Me, New DinosaursChangedEventArgs( _ ChangeType.Cleared, Nothing, Nothing)) End Sub End Class ' Event argument for the Changed event. ' Public Class DinosaursChangedEventArgs Inherits EventArgs Public ReadOnly ChangedItem As String Public ReadOnly ChangeType As ChangeType Public ReadOnly ReplacedWith As String Public Sub New(ByVal change As ChangeType, ByVal item As String, _ ByVal replacement As String) ChangeType = change ChangedItem = item ReplacedWith = replacement End Sub End Class Public Enum ChangeType Added Removed Replaced Cleared End Enum Public Class Demo Public Shared Sub Main() Dim dinosaurs As New Dinosaurs AddHandler dinosaurs.Changed, AddressOf ChangedHandler dinosaurs.Add("Psitticosaurus") dinosaurs.Add("Caudipteryx") dinosaurs.Add("Compsognathus") dinosaurs.Add("Muttaburrasaurus") Display(dinosaurs) Console.WriteLine(vbLf & "IndexOf(""Muttaburrasaurus""): {0}", _ dinosaurs.IndexOf("Muttaburrasaurus")) Console.WriteLine(vbLf & "Contains(""Caudipteryx""): {0}", _ dinosaurs.Contains("Caudipteryx")) Console.WriteLine(vbLf & "Insert(2, ""Nanotyrannus"")") dinosaurs.Insert(2, "Nanotyrannus") Console.WriteLine(vbLf & "dinosaurs(2): {0}", dinosaurs(2)) Console.WriteLine(vbLf & "dinosaurs(2) = ""Microraptor""") dinosaurs(2) = "Microraptor" Console.WriteLine(vbLf & "Remove(""Microraptor"")") dinosaurs.Remove("Microraptor") Console.WriteLine(vbLf & "RemoveAt(0)") dinosaurs.RemoveAt(0) Display(dinosaurs) End Sub Private Shared Sub Display(ByVal cs As Collection(Of String)) Console.WriteLine() For Each item As String In cs Console.WriteLine(item) Next item End Sub Private Shared Sub ChangedHandler(ByVal source As Object, _ ByVal e As DinosaursChangedEventArgs) If e.ChangeType = ChangeType.Replaced Then Console.WriteLine("{0} was replaced with {1}", _ e.ChangedItem, e.ReplacedWith) ElseIf e.ChangeType = ChangeType.Cleared Then Console.WriteLine("The dinosaur list was cleared.") Else Console.WriteLine("{0} was {1}.", _ e.ChangedItem, e.ChangeType) End If End Sub End Class ' This code example produces the following output: ' 'Psitticosaurus was Added. 'Caudipteryx was Added. 'Compsognathus was Added. 'Muttaburrasaurus was Added. ' 'Psitticosaurus 'Caudipteryx 'Compsognathus 'Muttaburrasaurus ' 'IndexOf("Muttaburrasaurus"): 3 ' 'Contains("Caudipteryx"): True ' 'Insert(2, "Nanotyrannus") 'Nanotyrannus was Added. ' 'dinosaurs(2): Nanotyrannus ' 'dinosaurs(2) = "Microraptor" 'Nanotyrannus was replaced with Microraptor ' 'Remove("Microraptor") 'Microraptor was Removed. ' 'RemoveAt(0) 'Psitticosaurus was Removed. ' 'Caudipteryx 'Compsognathus 'Muttaburrasaurus
using System; using System.Collections.Generic; using System.Collections.ObjectModel; public class Dinosaurs : Collection<string> { public event EventHandler<DinosaursChangedEventArgs> Changed; protected override void InsertItem(int index, string newItem) { base.InsertItem(index, newItem); EventHandler<DinosaursChangedEventArgs> temp = Changed; if (temp != null) { temp(this, new DinosaursChangedEventArgs( ChangeType.Added, newItem, null)); } } protected override void SetItem(int index, string newItem) { string replaced = Items[index]; base.SetItem(index, newItem); EventHandler<DinosaursChangedEventArgs> temp = Changed; if (temp != null) { temp(this, new DinosaursChangedEventArgs( ChangeType.Replaced, replaced, newItem)); } } protected override void RemoveItem(int index) { string removedItem = Items[index]; base.RemoveItem(index); EventHandler<DinosaursChangedEventArgs> temp = Changed; if (temp != null) { temp(this, new DinosaursChangedEventArgs( ChangeType.Removed, removedItem, null)); } } protected override void ClearItems() { base.ClearItems(); EventHandler<DinosaursChangedEventArgs> temp = Changed; if (temp != null) { temp(this, new DinosaursChangedEventArgs( ChangeType.Cleared, null, null)); } } } // Event argument for the Changed event. // public class DinosaursChangedEventArgs : EventArgs { public readonly string ChangedItem; public readonly ChangeType ChangeType; public readonly string ReplacedWith; public DinosaursChangedEventArgs(ChangeType change, string item, string replacement) { ChangeType = change; ChangedItem = item; ReplacedWith = replacement; } } public enum ChangeType { Added, Removed, Replaced, Cleared }; public class Demo { public static void Main() { Dinosaurs dinosaurs = new Dinosaurs(); dinosaurs.Changed += ChangedHandler; dinosaurs.Add("Psitticosaurus"); dinosaurs.Add("Caudipteryx"); dinosaurs.Add("Compsognathus"); dinosaurs.Add("Muttaburrasaurus"); Display(dinosaurs); Console.WriteLine("\nIndexOf(\"Muttaburrasaurus\"): {0}", dinosaurs.IndexOf("Muttaburrasaurus")); Console.WriteLine("\nContains(\"Caudipteryx\"): {0}", dinosaurs.Contains("Caudipteryx")); Console.WriteLine("\nInsert(2, \"Nanotyrannus\")"); dinosaurs.Insert(2, "Nanotyrannus"); Console.WriteLine("\ndinosaurs[2]: {0}", dinosaurs[2]); Console.WriteLine("\ndinosaurs[2] = \"Microraptor\""); dinosaurs[2] = "Microraptor"; Console.WriteLine("\nRemove(\"Microraptor\")"); dinosaurs.Remove("Microraptor"); Console.WriteLine("\nRemoveAt(0)"); dinosaurs.RemoveAt(0); Display(dinosaurs); } private static void Display(Collection<string> cs) { Console.WriteLine(); foreach( string item in cs ) { Console.WriteLine(item); } } private static void ChangedHandler(object source, DinosaursChangedEventArgs e) { if (e.ChangeType==ChangeType.Replaced) { Console.WriteLine("{0} was replaced with {1}", e.ChangedItem, e.ReplacedWith); } else if(e.ChangeType==ChangeType.Cleared) { Console.WriteLine("The dinosaur list was cleared."); } else { Console.WriteLine("{0} was {1}.", e.ChangedItem, e.ChangeType); } } } /* This code example produces the following output: Psitticosaurus was Added. Caudipteryx was Added. Compsognathus was Added. Muttaburrasaurus was Added. Psitticosaurus Caudipteryx Compsognathus Muttaburrasaurus IndexOf("Muttaburrasaurus"): 3 Contains("Caudipteryx"): True Insert(2, "Nanotyrannus") Nanotyrannus was Added. dinosaurs[2]: Nanotyrannus dinosaurs[2] = "Microraptor" Nanotyrannus was replaced with Microraptor Remove("Microraptor") Microraptor was Removed. RemoveAt(0) Psitticosaurus was Removed. Caudipteryx Compsognathus Muttaburrasaurus */
継承階層
スレッド セーフこの型の public static (Visual Basic では Shared) メンバは、スレッド セーフです。すべてのインスタンス メンバがスレッド セーフになるかどうかは保証されていません。
コレクションが変更されない限り、Collection では、複数の読み込み操作が同時に発生しても問題ありません。ただし、コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。すべての列挙処理が終わるまでコレクションをロックすることにより、列挙処理でのスレッド セーフを確保できます。コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。
プラットフォームWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照
パブリック プロパティ
参照
パブリック プロパティ
プロテクト プロパティ
明示的インターフェイスの実装
参照
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Add | 要素を Collection オブジェクトに追加します。 |
| Clear | Visual Basic の Collection オブジェクトの要素をすべて削除します。 |
| Contains | Visual Basic の Collection オブジェクトに特定のキーを持つ要素が含まれているかどうかを示す Boolean 値を返します。 |
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
| GetEnumerator | Collection オブジェクト (Visual Basic) に対する反復処理に使用する、列挙子オブジェクトへの参照を返します。 |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
| Remove | オーバーロードされます。 Collection オブジェクトから要素を削除します。 |
| ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
参照
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Add | Collection の末尾にオブジェクトを追加します。 |
| Clear | Collection からすべての要素を削除します。 |
| Contains | ある要素が Collection 内に存在するかどうかを判断します。 |
| CopyTo | Collection 全体を互換性のある 1 次元の Array にコピーします。コピー操作は、コピー先の配列の指定したインデックスから始まります。 |
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
| GetEnumerator | Collection を反復処理する列挙子を返します。 |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
| IndexOf | 指定したオブジェクトを検索し、Collection 全体内で最初に見つかった位置の 0 から始まるインデックスを返します。 |
| Insert | Collection 内の指定したインデックスの位置に要素を挿入します。 |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
| Remove | Collection 内で最初に見つかった特定のオブジェクトを削除します。 |
| RemoveAt | Collection の指定したインデックスにある要素を削除します。 |
| ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| ClearItems | Collection からすべての要素を削除します。 |
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
| InsertItem | Collection 内の指定したインデックスの位置に要素を挿入します。 |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
| RemoveItem | Collection の指定したインデックスにある要素を削除します。 |
| SetItem | 指定したインデックス位置にある要素を置き換えます。 |
明示的インターフェイスの実装| 名前 | 説明 | |
|---|---|---|
| System.Collections.ICollection.CopyTo | ICollection の要素を Array にコピーします。Array の特定のインデックスからコピーが開始されます。 |
| System.Collections.IEnumerable.GetEnumerator | コレクションを反復処理する列挙子を返します。 |
| System.Collections.IList.Add | IList に項目を追加します。 |
| System.Collections.IList.Contains | IList に特定の値が格納されているかどうかを判断します。 |
| System.Collections.IList.IndexOf | IList 内での指定した項目のインデックスを調べます。 |
| System.Collections.IList.Insert | IList 内の指定したインデックスの位置に項目を挿入します。 |
| System.Collections.IList.Remove | IList 内で最初に見つかった特定のオブジェクトを削除します。 |
参照Visual Basic の Collection は、一定の順序で並んだ項目のセットであり、1 つの単位として参照できます。
Collection データ型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ| 名前 | 説明 | |
|---|---|---|
| Collection | 新しい Visual Basic の Collection オブジェクト (Visual Basic) を作成して返します。 |
パブリック プロパティ
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Add | 要素を Collection オブジェクトに追加します。 |
| Clear | Visual Basic の Collection オブジェクトの要素をすべて削除します。 |
| Contains | Visual Basic の Collection オブジェクトに特定のキーを持つ要素が含まれているかどうかを示す Boolean 値を返します。 |
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
| GetEnumerator | Collection オブジェクト (Visual Basic) に対する反復処理に使用する、列挙子オブジェクトへの参照を返します。 |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
| Remove | オーバーロードされます。 Collection オブジェクトから要素を削除します。 |
| ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
参照Collection ジェネリック型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック プロパティ
プロテクト プロパティ
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Add | Collection の末尾にオブジェクトを追加します。 |
| Clear | Collection からすべての要素を削除します。 |
| Contains | ある要素が Collection 内に存在するかどうかを判断します。 |
| CopyTo | Collection 全体を互換性のある 1 次元の Array にコピーします。コピー操作は、コピー先の配列の指定したインデックスから始まります。 |
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
| GetEnumerator | Collection を反復処理する列挙子を返します。 |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
| IndexOf | 指定したオブジェクトを検索し、Collection 全体内で最初に見つかった位置の 0 から始まるインデックスを返します。 |
| Insert | Collection 内の指定したインデックスの位置に要素を挿入します。 |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
| Remove | Collection 内で最初に見つかった特定のオブジェクトを削除します。 |
| RemoveAt | Collection の指定したインデックスにある要素を削除します。 |
| ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| ClearItems | Collection からすべての要素を削除します。 |
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
| InsertItem | Collection 内の指定したインデックスの位置に要素を挿入します。 |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
| RemoveItem | Collection の指定したインデックスにある要素を削除します。 |
| SetItem | 指定したインデックス位置にある要素を置き換えます。 |
明示的インターフェイスの実装| 名前 | 説明 | |
|---|---|---|
| System.Collections.ICollection.CopyTo | ICollection の要素を Array にコピーします。Array の特定のインデックスからコピーが開始されます。 |
| System.Collections.IEnumerable.GetEnumerator | コレクションを反復処理する列挙子を返します。 |
| System.Collections.IList.Add | IList に項目を追加します。 |
| System.Collections.IList.Contains | IList に特定の値が格納されているかどうかを判断します。 |
| System.Collections.IList.IndexOf | IList 内での指定した項目のインデックスを調べます。 |
| System.Collections.IList.Insert | IList 内の指定したインデックスの位置に項目を挿入します。 |
| System.Collections.IList.Remove | IList 内で最初に見つかった特定のオブジェクトを削除します。 |
| System.Collections.IList.Item | 指定したインデックスにある要素を取得または設定します。 |
参照出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/01/08 05:49 UTC 版)
| 『COLLECTION』 | ||||
|---|---|---|---|---|
| 中山美穂 の ベスト・アルバム | ||||
| リリース | ||||
| ジャンル | ポップス 歌謡曲 |
|||
| レーベル | キングレコード | |||
| チャート最高順位 | ||||
| ゴールドディスク | ||||
| 第2回日本ゴールドディスク大賞
|
||||
| 中山美穂 アルバム 年表 | ||||
|
||||
| 『COLLECTION』収録のシングル | ||||
|
||||
『COLLECTION』(コレクション)は、中山美穂の初のシングル・コレクション・アルバム。1987年11月15日にキングレコードから発売された。規格品番はLP:K28A 830、CT:K28H 1040、CD:K32X 200。
1985年のデビュー曲「C」から1987年の「CATCH ME」までの全シングルA面曲が発売順に収録されている。なお「C」と「ツイてるねノッてるね」の2曲は、表記されていないがアルバム・バージョン(リミックス)となっている(2006年の再発盤ではシングル・バージョンに差し替えられている)。
本作で初めてオリコン・アルバムチャートの1位を獲得し、1987年と1988年両方のアルバム年間売上トップ40にランクインする好セールスを記録した。また、翌年に発表された第2回日本ゴールドディスク大賞のヤングアイドル(女性ソロ)部門の受賞作であり、同賞の "The Best Artist of the Year" も受賞している[2]。
ジャケットは篠山紀信が撮影したものである。CDとカセットテープとではジャケット写真が少々異なる。
2014年6月25日には、本作を含む『COLLECTION』シリーズ4作品のハイレゾ音源による配信が開始された[3]。音源は全曲にリマスターが施されたものとなっている。
| # | タイトル | 作詞 | 作曲 | 編曲 | 時間 |
|---|---|---|---|---|---|
| 1. | 「「C」」 | 松本隆 | 筒美京平 | 萩田光雄 | |
| 2. | 「生意気」 | 松本隆 | 筒美京平 | 船山基紀 | |
| 3. | 「BE-BOP-HIGHSCHOOL」 | 松本隆 | 筒美京平 | 萩田光雄 | |
| 4. | 「色・ホワイトブレンド」 | 竹内まりや | 竹内まりや | 清水信之 | |
| 5. | 「クローズ・アップ」 | 松本隆 | 財津和夫 | 大村雅朗 | |
| 6. | 「JINGI・愛してもらいます」 | 松本隆 | 小室哲哉 | 大村雅朗 |
| # | タイトル | 作詞 | 作曲 | 編曲 | 時間 |
|---|---|---|---|---|---|
| 1. | 「ツイてるね ノッてるね」 | 松本隆 | 筒美京平 | 大村雅朗・船山基紀 | |
| 2. | 「WAKU WAKUさせて」 | 松本隆 | 筒美京平 | 船山基紀 | |
| 3. | 「「派手!!!」」 | 松本隆 | 筒美京平 | 船山基紀 | |
| 4. | 「50/50」 | 田口俊 | 小室哲哉 | 船山基紀 | |
| 5. | 「CATCH ME」 | 角松敏生 | 角松敏生 | 角松敏生 |
| # | タイトル | 作詞 | 作曲 | 編曲 | 時間 |
|---|---|---|---|---|---|
| 1. | 「「C」」 | 松本隆 | 筒美京平 | 萩田光雄 | |
| 2. | 「生意気」 | 松本隆 | 筒美京平 | 船山基紀 | |
| 3. | 「BE-BOP-HIGHSCHOOL」 | 松本隆 | 筒美京平 | 萩田光雄 | |
| 4. | 「色・ホワイトブレンド」 | 竹内まりや | 竹内まりや | 清水信之 | |
| 5. | 「クローズ・アップ」 | 松本隆 | 財津和夫 | 大村雅朗 | |
| 6. | 「JINGI・愛してもらいます」 | 松本隆 | 小室哲哉 | 大村雅朗 | |
| 7. | 「ツイてるね ノッてるね」 | 松本隆 | 筒美京平 | 大村雅朗・船山基紀 | |
| 8. | 「WAKU WAKUさせて」 | 松本隆 | 筒美京平 | 船山基紀 | |
| 9. | 「「派手!!!」」 | 松本隆 | 筒美京平 | 船山基紀 | |
| 10. | 「50/50」 | 田口俊 | 小室哲哉 | 船山基紀 | |
| 11. | 「CATCH ME」 | 角松敏生 | 角松敏生 | 角松敏生 |
(collection から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/12/28 23:44 UTC 版)
コレクション(英語:collection)は、モノを広く集めること、また集められたもの。収集、収集物、所蔵品。「収集」は「蒐集」とも書く。趣味としての収集活動に対して使われることが多いが。また、研究用資料、博物館や美術館等の所蔵作品群、近年では作家の著作集などに対しても用いられている。服飾においては、ファッションデザイナーや服飾ブランドが開催する展示会及びその作品群を指す。ただしその分野は英語ではファッションウィーク (fashion week) と呼ぶのが一般的である(詳細はファッションショーを参照)。また、日本では一般的でないが、英語圏では募金、寄付金、献金、集金などもコレクションと呼ばれる。収集する人のことを日本では古くはコレクトマニア(直訳すると蒐集狂)と呼び、現在はコレクターと呼ぶ。
収集は人間の生活において広い範囲にわたって見られる行動であり、美術館や図書館、博物館などに代表されるように、文化財の収集、蓄積は文化の発展に大きく寄与してきた。またそのように集められるものは有形のものに限らず、無形の知識や言い伝えなどもしばしば収集の対象となる。現代では個人の趣味として物を集める人も多く、そのような趣味としてのコレクションでは、芸術品などの高価なものから集めている本人以外は見向きもしないようながらくたまでありとあらゆるものが収集の対象となっている。
「集められたもの」すべてが必ずしも「コレクション」となるわけではない。例えば商業活動を通じて金銭を集め、財産を増やしていく行為は「コレクション」とは呼ばれないし、医師が自分の診療所にいくら多くの患者のカルテを持っていたとしてもそれは「コレクション」ではない。これに関しヴァルター・ベンヤミンやジャン・ボードリヤールのような哲学者は、事物が本来の実用的な機能から切り離されて日常とは別の体系に組み込まれることを(特に趣味としての)コレクションの性質だとしている[1]。また歴史家のクシシトフ・ポミアンは、「歴史家の実践において」コレクションは単なる物の堆積とは以下の3つの点で区別されるとしている[2]。
精神病理学においては、認知症や統合失調症の患者に見られるような、身近な物を捨てられず無闇に溜め込んでしまう症状を「蒐集症(collectionism)」と称する。また精神科医の春日武彦は収集癖に親和性が高い病理として強迫神経症を挙げている[3]。
芸術や学問においては、先行作品や資料、文献などが後世に伝えられることがその発展の上での条件であり、したがって文物の収集は芸術、学問の諸分野で重要な役割を果たしている。特に著作、文献の収集としての図書館はすでに紀元前7世紀にその例があるが、これはあらゆる学問研究の基盤を成す収集であると言える。学問の諸分野のうちで特に収集と深い関わりがあるのは博物学であり、動物、植物、鉱物などの自然物の収集と分類がその基盤である。この分野においては趣味による採集を通じて新種の発見がなされるということも多い。考古学においては古代の人類の遺物が、古生物学においては太古の生物の化石が収集・研究の対象となり、民俗学においては、民芸品のような有形のものに限らず伝承や民謡のような無形のものも収集される。(広い意味では千夜一夜物語や梁塵秘抄、イソップ物語も収集の一形態と考える事ができる)
美術品の収集の歴史は古く、ヘレニズム時代に既に権力者、政治家、学者らによる美術品の収集、公開が行われ、古代ローマの支配拡大に伴って戦利品として古代ギリシアの美術品を持ち帰るということもしばしば行われた。
中世ヨーロッパでは教会が美術品収集の中心であり、彫刻や工芸品の他、写本や珍しい動物の標本などを宝物庫(シャッツカンマー)に所蔵し、中世末期になると宮廷や富裕な市民の間でも世俗的な美術品の収集が行われている。
ルネサンス期においては国家的なまとまりがまだ生じていなかったイタリアを中心に、メディチ家を始めとする富裕層・支配者層の間で古代美術を規範とした美術品収集が行われ、あるいは好古家によって骨董品収集が行われ、それにより国内外の珍品を集めて展示するヴンダーカンマー(驚異の部屋)が作られるようになった。このような私的なコレクションは啓蒙主義の時代とそれに続くフランス革命によって次々に公共化されていき、その幾つかは今日存在する美術館、博物館の基礎となっている。
日本においては奈良時代の正倉院に代表されるように献納物からなる権力者のコレクションが存在したが、個人の美意識に基づいて収集が行われたものとしては足利義政による東山御物などが早い例である。戦国時代から江戸時代には茶の湯の流行から各地の数寄者・大名によって茶道具や古書画が収集されており、江戸時代後期になると文人趣味の流行から中国の書画骨董が収集の対象となった。明治時代になると西洋の美意識が輸入されるようになるが、同時にフェノロサらによって日本美術の独自性が打ち出され美術収集の方向性に大きな影響を与えた。フェノロサ自身明治10年代に多くの日本美術を収集しており、現在そのコレクションはボストン美術館に所蔵されている。明治後期からは益田孝、原富太郎、根津嘉一郎、岩崎弥太郎など実業家によって古画・古磁器を中心とした美術品の収集を行われており、現代でもこのような個人コレクションがのちに美術館の基礎となる例は多い。ただ、残念なのは日本に措ける蒐集には万葉集から始まり江戸時代における柳多留のような歌や詩の蒐集という芸術が伝統的にあり、この場合、古今和歌集や新古今に代表される勅撰和歌集のように政府を挙げて取り組まれることもあった等、収集という行為の一大ジャンルとしてあったが欧州では一般的な形態では無かったためか収集、という見られ方をされていないことに、洋の東西に措けるギャップがある。
趣味としてのコレクションの歴史は古く、中国中世の説話集『世説新語』には、下駄の収集に凝って自ら手入れをし「一生に何足の下駄が履けることか」と嘆いていた人物が登場する[4]。近代において市民社会が発達すると、一般市民の間で趣味としてのコレクションが広く行われるようになる。
このような趣味においては美術品、工芸品などの比較的高価なものから、本や古地図、動植物や鉱物標本など資料的価値のあるもの、硬貨、切手など収集の歴史の長いもの、模型や玩具、記念品や土産物のような比較的安価なもの、食料品のパッケージや包装紙のようなそれ自体は価値のないようなものに至るまで、各人の好みに従ってほとんどありとあらゆるものがコレクションの対象となっている。
もちろん時代情勢によって集められるものは移り変わってくる。たとえばタバコ関連は、煙管やパイプ、ライターなどが収集の対象となっているが、嫌煙の風潮によりその価値が大きく損なわれた。このように収集は社会情勢に大きく影響される。
しかし、煙管を使うための煙草入れに附属することが多かった根付は煙草用品とは別に単独で人気が出てきた。これは海外から移入されたブームと言われている。
いわゆる現代的なマニアと古典的な蒐集との橋渡しの概念を提示したのが柳宗悦で、その著書、「茶と美」には「蒐集について」、という章が設けられている。
コレクションに国境は無く、サザビーズやクリスティーズ、フィリップス、ボナムズなどのオークションハウスがコレクションの世界に新たなジャンルを作ろうと働きかけることもある。
現代では物の種類による収集ではなく、特定の漫画・アニメーション作品やそのキャラクターの関連商品(キャラクターグッズ)を収集する例も多い。またトレーディングカードや食玩のように、始めから消費者によって収集の対象とされることを前提とした商品も数多く生産されており、このような分野においては特定のシリーズをすべて収集することが目指される。
また近年のインターネットの発達により情報交換サイトやネットオークション、メルカリでの取引きも行われるようになっており、収集家同士の間では未開封の商品や新品同様の商品がしばしば高値で取引されている。
固有名詞の分類