次のような一般的なリストがあるとしましょう。
List<string> list = new List<string>() { "abc", "demo", "stackoverflow" };
このようなスタックの新しいインスタンスを作成しようとすると、機能しません。
Stack<string> stack = new Stack<string>() { "abc", "demo", "stackoverflow" };
コンパイラは、Stack<>にはaddメソッドがないと言っています。そこで、extensionmethodsを使用してaddメソッドを実装しました。
public static void Add<T>(this Stack<T> stack, T item)
{
stack.Push(item);
}
ただし、コンパイラは同じエラーを出します。しかし、なぜ?コンパイラは今メソッドを見つけるべきではありませんか?さらに、ジェネリックスタックはIEnumerable<>とICollection<>を実装していませんか?スタックにデフォルトでAddメソッドが含まれていないのはなぜですか?