2016-11-07 5 views
0

私はなぜか分からないが、Visual Studioのコンパイラはこの機能を静的にするように頼んだ。コンパイラは私にこの機能を静的にするように頼んだ

public List<string> IntersectIgnoreEmpty(this List<string> list, List<string> other) 
{ 
    if (other.Any()) 
     return list.Intersect(other).ToList(); 
    return list; 
} 

私はリストの一部が空であってもよいと私は、この機能を作ったので、他のデータを持って、私はデータを持っている人の間で交差したい文字列

List<string> universe = new List<string>(); 
List<string> foo1 = new List<string>(); 
List<string> foo2 = new List<string>(); 
List<string> foo3 = new List<string>(); 
. 
. 
. 
List<string> fooN = new List<string>(); 

の多くのリストを持っています

と私は静的にするまで私にエラーを与えた。どうしてか分かりません。

+1

拡張メソッドは静的である必要があります – Pikoh

答えて

6

thisキーワードを最初のパラメータに追加したため、拡張メソッドを定義しています。

拡張メソッドを定義する必要がありますas a static method in a static class

拡張メソッドは静的メソッドとして定義されていますが、インスタンスメソッド構文を使用して呼び出されます。最初のパラメータは、メソッドが動作する型を指定します。パラメータの前には、修飾子のが付いています。拡張メソッドは、usingディレクティブを使用して名前空間をソースコードに明示的にインポートする場合にのみ有効です。

通常の方法を定義する場合は、thisキーワードを削除して、クラスのインスタンスメソッドにします。

+0

どうすれば関数を記述しますか? "普通"の方法(この日はちょっとブロックされている) –

+1

'this'キーワードを削除します。 – Maarten

関連する問題