C#でテンプレートを使ってみる

.NET1.1のころは.NET屋さんだったのに、それ以降さっぱりさわってなくて全く追いついてない。利用する方は問題ないけど作る方。


とりあえずは、Smalltalkのメソッドと同じような機能で実装してみる。
環境はVC#2008EE。

public static T[] Reject<T>(T rejectObject, T[] sourceList) {
	List<T> newList = new List<T>();
	foreach (T o in sourceList) {
		if (!o.Equals(rejectObject)) newList.Add(o);
	}
	T[] array = new T[newList.Count];
	for (int i = 0; i < array.Length; i++) {
		array[i] = newList[i];
	}
	return array;
}

配列を使ってるせいで、ローカル変数を2個作ってるのが嫌かも。
入力が配列じゃなくて他のジェネリッククラスだった場合、オーバーロードしないといけないってこと?

まとめ

戻り値とか引数とかより、メソッド名にを付けるのが先。じゃないとインテリセンス効かない。
メソッド中の比較処理には==は使えない。Predicate使えばいいのか?