Array.Sort()およびArray.IndexOf()メソッドが静的になり、同様のArrayList.Sort()およびArrayList.IndexOf()メソッドがメンバーメソッドとして設計されている理由は常に興味がありました。アイデアをありがとう。
2 に答える
私の見解では、配列クラスは基本的に、プログラムで [] を使用して宣言する固定サイズの配列のクラス表現です (int が System.Int32 としてクラス (構造) 表現を持っているように類似性を引き出すことができます)。
また、Array クラスには、インスタンス変数に実際の配列データが含まれていませんが、宣言された固定サイズの配列で並べ替えと検索を行うために利用できる静的ユーティリティ関数のみが提供されます。
一方、ArrayList はコレクション クラスであり、動的なサイズの配列実装を提供し、データを格納するための独自のデータ構造を持っています。したがって、これらのメソッドはインスタンス メソッドであるため、その特定のインスタンスのデータを操作できます。
のようなコレクション クラスはArrayList
、ある種の内部ストレージをカプセル化します (おそらく、必要に応じてサイズ変更される配列ですが、リンク リストまたはその他の実装である可能性もあります)。メソッドは、基礎となるプライベートストレージに効率的IndexOf
にSort
アクセスする必要があるため、インスタンスメソッドである必要があります。
Array
一方、 はカプセル化されておらず、ストレージへの直接のパブリック アクセスがあります。Array.IndexOf
andメソッドは、配列データへのArray.Sort
特別なアクセスを必要としないため、静的メソッドである可能性があります。