C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でSortedListオブジェクトのシャローコピー(浅いコピー)を作成する方法

C#でSortedListオブジェクトのシャローコピー(浅いコピー)を作成するには、Clone()メソッドを使用します。このメソッドは、元のコレクションと同じキーと値を持つ新しいSortedListインスタンスを返します。

なお、シャローコピーでは要素自体への参照がコピーされるだけで、参照型の要素は元のオブジェクトと共有される点に注意してください。以下に具体的なコード例を示します。

コード例1

using System;
using System.Collections;
public class Demo {
   public static void Main(String[] args){
      SortedList list = new SortedList();
      list.Add("A", "Jacob");
      list.Add("B", "Sam");
      list.Add("C", "Tom");
      list.Add("D", "John");
      list.Add("E", "Tim");
      list.Add("F", "Mark");
      list.Add("G", "Gary");
      list.Add("H", "Nathan");
      list.Add("I", "Shaun");
      list.Add("J", "David");
      Console.WriteLine("SortedList elements...");
      foreach(DictionaryEntry d in list){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      ICollection col1 = list.Values;
      Console.WriteLine("\nValues...");
      foreach(string s in col1)
         Console.WriteLine(s);
      ICollection col2 = list.Keys;
      Console.WriteLine("\nKeys...");
      foreach(string s in col2)
         Console.WriteLine(s);
      SortedList list2 = (SortedList)list.Clone();
      Console.WriteLine("\nResultant SortedList...cloned from above list");
      foreach(DictionaryEntry d in list){
         Console.WriteLine(d.Key + " " + d.Value);
      }
   }
}

上記のコードでは、まず文字列のキーと名前のペアを持つSortedListを作成し、すべての要素、値の一覧、キーの一覧を表示した後、Clone()メソッドでシャローコピーを生成しています。

出力

このプログラムを実行すると、次のような出力が得られます。

SortedList elements...
A Jacob
B Sam
C Tom
D John
E Tim
F Mark
G Gary
H Nathan
I Shaun
J David

Values...
Jacob
Sam
Tom
John
Tim
Mark
Gary
Nathan
Shaun
David

Keys...
A
B
C
D
E
F
G
H
I
J

Resultant SortedList...cloned from above list
A Jacob
B Sam
C Tom
D John
E Tim
F Mark
G Gary
H Nathan
I Shaun
J David

クローン元のリストと同じ内容が、複製されたSortedListにも正しく格納されていることが確認できます。

コード例2

続いて、もう一つの例を見てみましょう。こちらでは部署名を値としたSortedListに対して、GetValueList()メソッドで値の一覧を取得し、さらにIsReadOnlyプロパティで読み取り専用かどうかも確認しています。

using System;
using System.Collections;
public class Demo {
   public static void Main(String[] args){
      SortedList list = new SortedList();
      list.Add("One", "IT");
      list.Add("Two ", "Operations");
      list.Add("Three", "Marketing");
      list.Add("Four", "Purchase");
      list.Add("Five", "Sales");
      list.Add("Six", "Finance");
      Console.WriteLine("SortedList elements...");
      foreach(DictionaryEntry d in list){
         Console.WriteLine(d.Key + " " + d.Value);
      }
      Console.WriteLine("\nList of values...SortedList");
      IList col = list.GetValueList();
      foreach(string res in col) {
         Console.WriteLine(res);
      }
      Console.WriteLine("\nSortedList is read-only? = "+list.IsReadOnly);
      SortedList list2 = (SortedList)list.Clone();
      Console.WriteLine("\nResultant SortedList...cloned from above list");
      foreach(DictionaryEntry d in list){
         Console.WriteLine(d.Key + " " + d.Value);
      }
   }
}

出力

このプログラムを実行すると、次のような出力が得られます。

SortedList elements...
Five Sales
Four Purchase
One IT
Six Finance
Three Marketing
Two Operations

List of values...SortedList
Sales
Purchase
IT
Finance
Marketing
Operations

SortedList is read-only? = False Resultant SortedList...cloned from above list
Five Sales
Four Purchase
One IT
Six Finance
Three Marketing
Two Operations

IsReadOnlyプロパティがFalseを返していることから、このSortedListが読み書き可能であることもわかります。Clone()メソッドによる複製後も、元のリストと同じ要素が保持されていることが確認できました。

  1. HTMLで順序付きリスト(番号付きリスト)を作成する方法

    HTMLで順序付きリスト(番号付きリスト)を作成するには、<ol>タグを使用します。順序付きリストは<ol>タグから開始し、個々のリスト項目は<li>タグで定義します。各項目には自動的にマーカーが付与され、その種類は「数字」「アルファベット」「ローマ数字」などから選択できます。何も指定しない場合のデフォルトは「数字」です。サンプルコード以下のコードを実行すると、HTMLでの順序付きリストの使い方を確認できます。<!DOCTYPE html> <html>    <body>    

  2. Excelでカスタムリストを作成・削除・活用する方法を徹底解説

    この記事では、Microsoft Excelでカスタムリストを作成・削除・活用する方法を詳しく解説します。カスタムリスト機能は、毎回同じリストをExcelシートに入力する必要がある方にとって非常に便利な機能です。定型のリストを何度も手入力している方は、この記事を読むことで作業時間を大幅に短縮できるでしょう。 Excelのカスタムリストで作業が楽になる理由 Excelには、曜日や月の名前などが登録された組み込みリストが標準で用意されています。これらの組み込みリストは編集や削除ができません。まずは、組み込みリストの便利さを具体例で確認してみましょう。 例えば、週ごとの降雨量データを作成し、曜日名