継承するほとんどの時間System.Array
は、単一次元配列を使用しています。お気に入り:
int[] a1 = new int[2];
@Sergey Rybalkin が言うように、型int[]
から暗黙的に派生したものを定義すると。System.Array
この場合、メソッドIndexOf
は静的メソッドとしてではなく、インスタンス メソッドとして実装するのが最適です。
しかし、多次元配列のように System.Array から継承する別の型があります。この場合 (多次元)、この方法IndexOf
は意味がありません。
これをテストします。
int[,] arr = new int[2, 2];
arr[0, 0] = 3; arr[1, 0] = 4;
arr[0, 1] = 5; arr[1, 1] = 6;
Array.IndexOf(arr, 4);
最後の like は、メッセージとともに RankException をスローします"Only single dimension arrays are supported here."
おそらく、そして最も可能性が高いのは、このメソッドが静的として実装されているためです。
...
コメントについてIs there a main principle behind the decision, whether to make a method static or not?
あり、原則は非常に単純です。インスタンス メソッドは、オブジェクトのアクションまたは動作を表します。静的メソッドは、クラスに関連するロジックであるシステムの関数、または場合によってはクラスのインスタンスを作成せずに呼び出したいメソッドです。
またはSystem.Math
のようなメソッドを呼び出すたびにインスタンス数学が必要な場合、クラスでどのように混乱するかを考えてください。Sqrt
Pow
最後の例はSystem.Text.RegularExpressions.Regex
クラスです。このクラスには、Match
インスタンスとして実装されたメソッドと、静的として実装されたオーバーロードがあります。
それぞれが異なるコンテキストで使用されます。インスタンスは、同じパターンを複数回使用する場合に使用されます。コード内で一意の時間にパターンを使用する場合の静的。