建议19:使用更有效的对象和集合初始化

转载 2016年08月31日 13:33:53

建议19:使用更有效的对象和集合初始化

 依赖于属性和FCL 3.5之后的语法规则,现在我们有了更加简洁有效的对象和集合初始化机制:对象和集合初始化设定项。

对象初始化:

复制代码
    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person() {Name = "Mike", Age = 20};

            Console.Read();
        }
    }
复制代码

 

 对象初始化设定项支持在大括号中对自动实现的属性进行赋值。以往只能依靠构造方法传值进去,或者在对象构造完毕后对属性进行赋值。现在这些步骤简化了,初始化设定项实际上相当于编译器在对象生成后对属性进行了赋值。

集合初始化同样进行了简化:

            List<Person> personList=new List<Person>()
            {
                new Person(){Name = "rose",Age=19},
                person,
                null
            };

使用集合初始化设定项,编译器会在集合对象创建完毕后对集合调用Add方法。

上面这段代码演示了如何在初始化语句中创建一个新对象或一个现有对象,以及一个null值。

 不过,初始化设定项不仅仅是为了对象和集合初始化方便,为LINQ查询返回的集合中匿名类型的属性都是只读的,如果需要为匿名类型属性赋值,或者增加属性,只能通过初始化设定项来进行。初始化设定项还能为属性使用表达式。

下面的代码LINQ查询中创建了一个新的匿名类型,该类型含有属性Name和AgeScope,而AgeScope需要通过计算Person的Age属性得到。

复制代码
            List<Person> personList2 = new List<Person>()
            {
                new Person() { Name = "Rose", Age = 19 },
                new Person() { Name = "Steve", Age = 45 },
                new Person() { Name = "Jessica", Age = 20 },
            };

            var pTemp = from p in personList2 select new { p.Name, AgeScope = p.Age > 20 ? "Old" : "Young" };
            foreach (var item in pTemp)
            {
                Console.WriteLine(string.Format("{0}:{1}", item.Name, item.AgeScope));
            }
复制代码

 

 

 

 

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

C#教程:简化的初始化

提示:你必须被迫使用局部变量来做临时的处理, 或者创建一个帮助方法并基于参数来执行适当的初始化.简化的初始化面向对象的编程语言通常都拥有流线型的对象创建过程, 毕竟, 在你准备开始使用一个对象时, ...

笔记19--startActivity、startActivityForResult、Bundle--更新传类对象、集合、类对象集合

1、startActivity:仅仅是跳转到目标页面,若想
  • mwj_88
  • mwj_88
  • 2014年04月11日 17:10
  • 2830

有效的使用和设计COM智能指针——条款19:在接口完满的前提下使之最小化。

条款19:在接口完满的前提下使之最小化。 更多条款请前往原文出处:http://blog.csdn.net/liuchang5 通过智能指针,如果我们需要提前结束一个COM组件的生命周...

如何有效地使用对话框 2010-8-5 19:28

Q:如何在对话框中加入工具条 在 OnInitDialog 中加入下面代码: BOOL CYourDlg::OnInitDialog() { CDialog::OnInitDia...

日常使用 Git 的 19 个建议

url: http://blog.jobbole.com/96088/ 如果你对git一无所知,那么我建议先去读一下Git 常用命令速查。本篇文章主要适合有一定 git 使用基础的人群。 目录...

日常使用 Git 的 19 个建议

日常使用 Git 的 19 个建议  原创  2015-12-17  伯乐在线/张然然  伯乐在线 我使用Git已经有4年之久,在这里想分享一些实用的小技巧,希望能对大家有所帮助。 ...
  • wavetry
  • wavetry
  • 2016年03月05日 22:23
  • 415

日常使用 Git 的 19 个建议

转自 http://blog.jobbole.com/96088/ 我使用Git已经有4年之久,在这里想分享一些实用的小技巧,希望能对大家有所帮助。 如果你对git一无所...

日常使用 Git 的 19 个建议

我使用Git已经有4年之久,在这里想分享一些实用的小技巧,希望能对大家有所帮助。 如果你对git一无所知,那么我建议先去读一下Git 常用命令速查。本篇文章主要适合有一定 git 使用基础的...

日常使用 Git 的 19 个建议

我使用Git已经有4年之久,在这里想分享一些实用的小技巧,希望能对大家有所帮助。 如果你对git一无所知,那么我建议先去读一下Git 常用命令速查。本篇文章主要适合有一定 git 使用基础的人群。 目...

编写高质量OC代码52建议总结:19.使用清晰而协调的命名方式

类、方法及变量的命名是Objective-C编程的重要环节。通常会觉得OC的语言很繁琐,因为其语法结构使代码读起来和句子一样。    [@"asdasdas" stringByReplacingO...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:建议19:使用更有效的对象和集合初始化
举报原因:
原因补充:

(最多只允许输入30个字)