C# - よく使うクラス - List - 削除

 クラウディア
1. 概要
2. 条件削除
3. 範囲削除

1. 概要

 「List」から要素を削除するメソッドです。
List.RemoveRange(Int32, Int32) メソッド (System.Collections.Generic) 

2. 条件削除

 ある条件のものを「List」から削除する際は。

public int RemoveAll (Predicate<T> match);
 というメソッドが使えます。

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
using System.Collections.Generic;

[Serializable]
public class ObjectCopy
{
・・・	略	・・・
}

[Serializable]
public class myClass : ObjectCopy
{
	public int 	  age  = 0;
	public string name = String.Empty;

	public myClass DeepCopy()
	{
		return (myClass)this.Clone();
	}
}

public class HelloWorld
{
	static public void Main ()
	{
		List<myClass> list01 = new List<myClass>
			{
				new myClass { age = 20, name = @"hogehoge" },
				new myClass { age = 20, name = @"fugafuga" },
				new myClass { age = 21, name = @"piyopiyo" },
			};

		foreach (myClass m in list01)
		{
	        Console.WriteLine(@"age = [" + m.age + @"] name[" + m.name + @"]");
		}

        Console.WriteLine("");

		list01.RemoveAll(x => x.age == 20);

		foreach (myClass m in list01)
		{
	        Console.WriteLine(@"age = [" + m.age + @"] name[" + m.name + @"]");
		}
	}
}
 というソースを書いて、実行すると、下記の結果が得られます。

age = [20] name[hogehoge]
age = [20] name[fugafuga]
age = [21] name[piyopiyo]

age = [21] name[piyopiyo]

3. 範囲削除

 「RemoveRange」というメソッドで、ある範囲の要素を削除することができます。

using System;
using System.Collections.Generic;
using System.IO;

public class MyMain
{
	static public void Main ()
	{
		List<int> intList = new List<int>{ 123, 456, 789, };

		intList.ForEach(x => Console.WriteLine("  ["+ x +"]"));

		intList.RemoveRange(1, 1);
		Console.WriteLine("");
		Console.WriteLine("削除後");
		intList.ForEach(x => Console.WriteLine("  ["+ x +"]"));
	}
}
 というソースを書いて、ビルド後に実行すると、下記の結果が得られます。

  [123]
  [456]
  [789]

削除後
  [123]
  [789]
earthcar(アースカー)