11

C# で読み取り専用の 2 次元配列を返す確立された方法はありますか?

ReadOnlyCollectionを1 次元配列に使用するのが正しいことはわかっているので、喜んで独自のラッパー クラスを作成してthis[] {get}. しかし、この車輪がすでに存在する場合、車輪を再発明したくありません。

4

2 に答える 2

3

残念ながら、あなたが求めるケースを処理する組み込みの実装はありません。しかし、自分で簡単に実装するのは難しいことではありません。

唯一の考えは、あなたがすることは readonly collectionであり、そのコレクション内の要素ではないことを知っていることを願っています。

お役に立てれば。

于 2012-04-18T21:16:14.237 に答える
2

これをシミュレートする方法は 1 つしかありません。

プライベート配列を使用して、独自のクラスを作成する必要があります。

配列の最も類似した実装は、インデクサーです。

「10.8」リンクは、2 次元配列のシミュレーションを示しています。

getter のみを使用してインデクサーを実装すると、ユーザーは要素を読み取ることはできますが、書き込むことはできません。ただし、各要素がオブジェクト (参照型) の場合、アクセスされたオブジェクトのプロパティの変更を防ぐことはできません。

ただし、「読み取り専用」オブジェクトをシミュレートする方法はいくつかあります。

  • 配列内の各要素のプロパティを読み取り専用プロパティとして公開し、変更できないようにするラッパー クラスを作成します。
  • プリミティブ値型の使用 ( などint)
  • プライベート配列内の元の要素ではなく、プライベート配列内の要素のコピーを返すことで変更を打ち負かし、オブジェクトに加えられた変更が配列内の元のオブジェクトに影響を与えないようにします。

C++ などの他の言語では、定数値への参照とポインターがありますが、これは C# には存在しません。

于 2012-04-18T21:43:46.047 に答える