C#で読み取り専用のプリミティブベクトルを作成する問題について読んで(基本的にはそれを行うことはできません)、
public readonly int[] Vector = new int[]{ 1, 2, 3, 4, 5 }; // You can still changes values
私はについて学びましたReadOnlyCollectionBase
。これは、オブジェクトのコンテナの基本クラスであり、オブジェクトの位置にはアクセスできますが、変更はできません。MicrosoftDocsにも例があります。
ReadOnlyCollectionBaseクラス-MicrosoftDocs
任意のタイプを使用するように例を少し変更しました。
public class ReadOnlyList<T> : ReadOnlyCollectionBase {
public ReadOnlyList(IList sourceList) {
InnerList.AddRange( sourceList );
}
public T this[int index] {
get {
return( (T) InnerList[ index ] );
}
}
public int IndexOf(T value) {
return( InnerList.IndexOf( value ) );
}
public bool Contains(T value) {
return( InnerList.Contains( value ) );
}
}
...そしてそれは機能します。私の質問は、なぜこのクラスがC#の標準ライブラリに存在しないのかということSystem.Collections.Generic
です。私はそれを逃していますか?それはどこにある?ありがとうございました。