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使えばいいのか?