建议92:谨慎将数组或集合作为属性

来源:互联网 发布:大众汽车维修软件 编辑:程序博客网 时间:2024/05/22 09:45

建议92:谨慎将数组或集合作为属性

数组或集合作为属性会引起这样一个问题:如果属性是只读的,我们通常会认为它是不可用改变的,但如果将只读属性应用于数座或集合,而元素的内容和数量却仍旧可以随意改变。如下所示:

复制代码
        static void Main(string[] args)        {            Company microsoft = new Company();            microsoft.Employees[0].Name = "LiMing";            foreach (var item in microsoft.Employees)            {                Console.WriteLine(item.Name);            }            Console.ReadKey();        }        class Employee        {            public string Name { get; set; }        }        class Company        {            public Company()            {                Employees = new List<Employee>()                {                    new Employee(){ Name = "Bill Gates"}                };            }            public IList<Employee> Employees { get; private set; }        }
复制代码

在上面的代码中,我们可以随意对Employees进行集合操作,它不改变的只是自身的引用而已。

如果某个类型含有集合概念的属性,那么他的可见性应该是private或protected,并且,它更应该是一个字段。类型对外只公开必要的方法来操作这个集合。

 

 

 

转自:《编写高质量代码改善C#程序的157个建议》陆敏技

0 0