ネイティブ メソッドと同じシグネチャを持つ拡張メソッド (EM) を作成するとどうなりますか。
私のシナリオ
拡張メソッドを作成しました
public static class EM
{
public static void ForEach<T>(this List<T> enu, Action<T> action)
{
foreach (T item in enu)
action(item);
}
}
List にも同じシグネチャの関数があるため
public void ForEach(Action<T> action);
リストのために私がした
List<Label> re = new List<Label>();
re.ForEach(x => Foo(x));
これはコンパイルして実行しますが、EM を呼び出さず、代わりにそのネイティブ メソッドを呼び出します。オーバーロードするには署名に何らかの変更が必要であるため、2つのオーバーロードがあることは表示されないと確信しています
クエリ
Q1. なぜこうなった?
Q2. さらにパラメーターがあれば、パラメーターの順序を変更して呼び出すことができました。しかし、どうすれば彼に私の EM を同じ数のパラメーターで呼び出させることができるでしょうか (これは私の問題の非常に簡単な説明です。私の EM は複雑なものだった可能性があります)。