相关疑难解决方法(0)

返回'IList'与'ICollection'对比'收集'

我很困惑我应该从我的公共API方法和属性返回哪种集合类型.

我想到的收藏品是IList,ICollectionCollection.

返回其中一种类型总是优先于其他类型,还是取决于具体情况?

.net c# generics collections

112
推荐指数
5
解决办法
6万
查看次数

C#:List <T>和Collection <T>之间的区别(CA1002,不公开通用列表)

试图在这里运行一个项目的运行代码分析,并得到一些警告说,像这样:

CA1002:Microsoft.Design:在' SomeClass.SomeProtectedOrPublicProperty '中更改'List < SomeType > '以使用Collection,ReadOnlyCollection或KeyedCollection

我为什么要用Collection<T>而不是List<T>?当我查看msdn文档时,它们看起来几乎相同.在阅读了警告的错误帮助后,我发现了

System.Collections.Generic.List(T)_是一个通用集合,专为性能而非继承而设计,因此不包含任何虚拟成员.

但这究竟意味着什么呢?我应该做什么呢?

我应该继续在List<T>内部使用,然后在属性中返回一个new Collection<T>(someList)而不是?或者我应该开始使用Collection<T>而不是List<T>

c# collections encapsulation

95
推荐指数
2
解决办法
7万
查看次数

List(of T)和Collection(of T)有什么区别?

我已经看到它们以很多相同的方式使用了,我担心如果我不能更好地理解这一点,我将要走上一条不可逆转的设计之路.另外,我正在使用.NET.

.net collections list

88
推荐指数
7
解决办法
4万
查看次数

IEnumerable <T>作为返回类型

使用IEnumerable<T>返回类型有问题吗?FxCop抱怨返回List<T>(它建议返回Collection<T>).

好吧,我一直受到一条规则的指导:"尽可能接受,但要回报最大值".

从这个角度来看,返回IEnumerable<T>是一件坏事,但是当我想使用"懒惰检索"时我该怎么办?此外,yield关键字是如此的好.

c# collections ienumerable enumeration

28
推荐指数
3
解决办法
2万
查看次数

使用IEnumerable和ICollection与IList的自定义集合

我需要设计自己的自定义GenericCollection类.现在我有很多选择使用以获得它IEnumerable,ICollectionIList,在后来提供了一些附加功能.

我很困惑,如果我和我一起去,IEnumerable<T>我可能需要声明对象实际上像这种情况一样持有集合_list.

public class GenericCollection<T> : IEnumerable<T>
{
    private List<T> _list;
    //...
}
Run Code Online (Sandbox Code Playgroud)

但是如果我使用ICollection<T>或者IList<T>,我不需要声明List对象,因为它是隐式可用的.

public class GenericCollection<T> : IList<T>
{
    // no need for List object
    //private List<T> _list; 
    //...
}
Run Code Online (Sandbox Code Playgroud)

这两种方法在性能方面有何不同?

在哪种情况下,每个人都是首选,特别是在设计自己的集合时.我对轻量级收藏感兴趣,性能良好.我认为这可以通过使用,IEnumerable<T>但是如何与一些强有力的理由一起使用呢?

我已经审查了一些现有的帖子,但没有提供所需的信息.

返回'IList'与'ICollection'对比'收集'

c# ienumerable ilist icollection custom-collection

21
推荐指数
1
解决办法
2万
查看次数

返回ICollection <T>而不是List <T>的真正好处是什么?

我读过一些博客文章提到,对于公共API,我们应该总是返回ICollection(或IEnumerable)而不是List.返回ICollection而不是List的真正优势是什么?

谢谢!

重复:List(T)和Collection(T)有什么区别?

.net c# ienumerable icollection

15
推荐指数
1
解决办法
1万
查看次数

我必须将集合与列表用于导航属性

C#CollectionList有什么区别?我的意思是我应该使用哪一个作为导航属性:

public Collection<OrderDetail> OrderDetails { get; set; }
Run Code Online (Sandbox Code Playgroud)

或者

public List<OrderDetail> OrderDetails { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

6
推荐指数
1
解决办法
2869
查看次数

确定将内部List <T>作为IEnumerable <T>或ICollection <T>返回?

可能重复:
集合<T>与列表<T>您应该在接口上使用什么?

考虑这个方法 - 返回的变量myVar是a List<T>,但方法的返回类型MyMethod()IEnumerable<T>:

public IEnumerable<T> MyMethod(string stuff)
{
     var myVar = new List<T>();
     //do stuff

     return myVar;
}
Run Code Online (Sandbox Code Playgroud)

基本上,我想知道的是,如果返回myVar另一种类型是好的.

具体来说,就我的情况而言,'do stuff'通过a DataRow并将其中的项目分配给DataRow对象列表.我在其他地方也有类似的情况ICollectionIList返回类型.

我想要返回的原因IEnumerable或是ICollection因为我没有返回超过需要.但与此同时,这允许调用者将返回值转换为a,List如果需要这样做的话.

但是,我的return语句返回a List而不是方法的返回类型似乎很奇怪.这是正常做法吗?这样做有什么不对吗?

澄清(回应重复评论):

只是为了澄清,我很好奇的是,如果它是好的,在我的身体return语句返回一个List<T>,但这种方法管器具有返回类型的IEnumerable,或可能ICollection,Collection等...的东西不同比高于机构退货声明.

c# collections return return-type

5
推荐指数
1
解决办法
533
查看次数

何时返回 IEnumerable&lt;T&gt;

我应该IEnumerable<T>只在懒惰评估的情况下从方法和属性返回吗?

你有任何人的模式,当你返回IEnumerableICollectionIList

.net c# collections ienumerable

4
推荐指数
1
解决办法
627
查看次数

如何使用一些自定义方法创建只有List <string>的类?

这似乎是一项微不足道的任务,但我找不到怎么做(而且不知道该怎么称呼它).

例.我需要的state是实际上只是字符串列表的类.它必须如此工作:

state s = new state();
s.Add("John Madden");
//s[0] == "John Madden"
Run Code Online (Sandbox Code Playgroud)

我需要向这个类添加一些方法.

c# oop

1
推荐指数
1
解决办法
131
查看次数