C# 如何在C中实现固定的sze通用IList#

C# 如何在C中实现固定的sze通用IList#,c#,ilist,C#,Ilist,我正在构建一个特殊的集合,需要实现通用的IList接口。问题是,我希望集合像一个非通用的固定大小IList。我不希望用户能够在集合中插入或删除对象 由于某些原因,IList接口未实现IsFixedSize属性。那么,使用genericIList接口实现这一点的最佳方法是什么?我可以让Insert、Remove和RemoveAt方法抛出NotImplementedException,我可以接受,但是有更好、更被接受的方法吗 Tony您可以使用一个在您的IList上的包装器,它只允许读取内容,不允许

我正在构建一个特殊的集合,需要实现通用的
IList
接口。问题是,我希望集合像一个非通用的固定大小
IList
。我不希望用户能够在集合中插入或删除对象

由于某些原因,
IList
接口未实现
IsFixedSize
属性。那么,使用generic
IList
接口实现这一点的最佳方法是什么?我可以让
Insert
Remove
RemoveAt
方法抛出
NotImplementedException
,我可以接受,但是有更好、更被接受的方法吗

Tony

您可以使用一个在您的
IList
上的包装器,它只允许读取内容,不允许添加或删除:

var myList = new List<string>();
var readonlyList = new ReadOnlyCollection<string>(myList);
var myList=new List();
var readonlyList=新的ReadOnlyCollection(myList);
您可以使用一个在您的
IList
上的包装器,它只允许读取内容,不允许添加或删除:

var myList = new List<string>();
var readonlyList = new ReadOnlyCollection<string>(myList);
var myList=new List();
var readonlyList=新的ReadOnlyCollection(myList);

如果您不想更改“列表”的大小,那么只需使用数组即可


如果不希望集合可编辑,请使用
ReadOnlyCollection

如果不希望“列表”的大小可更改,请使用数组


如果不希望集合可编辑,请使用
ReadOnlyCollection

一种典型的方法是显式实现
IList
的违规成员,如
Add
Insert
Remove
,因此,除非人们真的将您的东西强制转换到
IList
,否则他们是不可用的。数组就是这样做的。

一种典型的方法是显式地实现
IList
中有问题的成员,比如
Add
Insert
、和
Remove
,这样人们就无法使用它们,除非他们真的将您的东西转换到
IList
。数组就是这样做的。

请用适当的语言(C#?)标记。请用适当的语言(C#?)标记。这是我要采取的方法。我将实现我不想显式公开的成员,并将其作为私有成员。这样,当用户将鼠标悬停在我的类的实例上时,它们就不会出现在IntelliSense中。这就是我将要采用的方法。我将实现我不想显式公开的成员,并将其作为私有成员。这样,当用户将鼠标悬停在我的类的实例上时,它们就不会出现在IntelliSense中。