相关疑难解决方法(0)

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 <T>成员时,我应该如何使用属性

当我想在我的课外制作一个只读的值类型时,我这样做:

public class myClassInt
{
    private int m_i;
    public int i {
        get { return m_i; }
    }

    public myClassInt(int i)
    {
        m_i = i;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来List<T>在我的课堂之外创建一个readonly类型(所以他们不能在其中添加/删除元素)?现在我只是宣布公开:

public class myClassList
{
    public List<int> li;
    public  myClassList()
    {
        li = new List<int>();
        li.Add(1);
        li.Add(2);
        li.Add(3);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# collections readonly

10
推荐指数
3
解决办法
8179
查看次数

C#:封装例如集合

我想知道哪一个被认为是最干净或最好用的,为什么.

其中一个公开了一个乘客列表,让用户添加和删除等.另一个隐藏列表,只让用户枚举它们并使用特殊方法添加.

例1

class Bus
{
    public IEnumerable<Person> Passengers { get { return passengers; } }
    private List<Passengers> passengers;

    public Bus()
    {
        passengers = new List<Passenger>();
    }

    public void AddPassenger(Passenger passenger)
    {
        passengers.Add(passenger);
    }
}

var bus = new Bus1();
bus.AddPassenger(new Passenger());
foreach(var passenger in bus.Passengers)
    Console.WriteLine(passenger);
Run Code Online (Sandbox Code Playgroud)

例2

class Bus
{
    public List<Person> Passengers { get; private set; }

    public Bus()
    {
        Passengers = new List<Passenger>();
    }
}

var bus = new Bus();
bus.Passengers.Add(new Passenger());
foreach(var passenger in bus.Passengers)
    Console.WriteLine(passenger); …
Run Code Online (Sandbox Code Playgroud)

c# encapsulation class

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

C#中的不可修改列表

在Java中,可以使用Collections#unmodifiableList()方法从现有List对象创建不可修改的列表.C#中有没有对应的?我是该语言的新手,并且在MSDN文档中找不到这样的内容.

.net c# collections unmodifiable c#-4.0

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

标签 统计

c# ×4

collections ×3

encapsulation ×2

.net ×1

c#-4.0 ×1

class ×1

readonly ×1

unmodifiable ×1