相关疑难解决方法(0)

集合<T>与List <T>您应该在接口上使用什么?

代码如下所示:

namespace Test
{
    public interface IMyClass
    {
        List<IMyClass> GetList();
    }

    public class MyClass : IMyClass
    {
        public List<IMyClass> GetList()
        {
            return new List<IMyClass>();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码分析时,我得到以下建议.

警告3 CA1002:Microsoft.Design:更改'IMyClass.GetList()'中的'List'以使用Collection,ReadOnlyCollection或KeyedCollection

我应该如何解决这个问题以及这里有什么好的做法?

.net c# collections code-analysis

152
推荐指数
3
解决办法
8万
查看次数

是否更好地使用Enumerable.Empty <T>()而不是新的List <T>()来初始化IEnumerable <T>?

假设你有一个人类:

public class Person
{
   public string Name { get; set;}
   public IEnumerable<Role> Roles {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我显然应该在构造函数中实例化角色.现在,我曾经使用像这样的List:

public Person()
{
   Roles = new List<Role>();
}
Run Code Online (Sandbox Code Playgroud)

但我在System.Linq命名空间中发现了这种静态方法

IEnumerable<T> Enumerable.Empty<T>();
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

Empty(TResult)()方法缓存一个空的序列TResult.当它返回的对象被枚举时,它不会产生任何元素.

在某些情况下,此方法对于将空序列传递给用户定义的方法非常有用 IEnumerable(T).它还可以用于为诸如的方法生成中性元素Union.有关此用法的示例,请参阅示例部分

那么编写这样的构造函数会更好吗?你用它吗?为什么?如果没有,为什么不呢?

public Person()
{
   Roles = Enumerable.Empty<Role>();
}
Run Code Online (Sandbox Code Playgroud)

c# linq constructor

133
推荐指数
7
解决办法
3万
查看次数

IQueryable,ICollection,IList和IDictionary接口之间的区别

我试图了解IQueryable,ICollection,IList和IDictionary接口之间的区别,这对于迭代,索引,查询等基本操作来说更快.

像Collection,List,Dictionary等类这样的类可以很好地启动这些接口,什么时候应该使用这些类.使用这些类比其他类的基本优势.

我尝试阅读其他类似问题的帖子,但没有回答我的完整问题.谢谢您的帮助.

.net c# collections performance list

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

使用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万
查看次数

IList 和 ICollection 有什么区别?

任何人都可以详细说明 IList 和 ICollection。而且,我们何时何地使用 IList 或 ICollection

c# arrays list arraylist

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