相濡以沫

鱼遇于池,池涸,相濡以沫,相鞠以湿,不若相忘于海。(爱技术、爱时尚)

用户操作
[即时聊天] [发私信] [加为好友]
挨踢老人ID:onlyzhangqin
2603035次访问,排名2好友286人,关注者595
大便的离去是马桶的招唤,还是肛门的不挽留?
onlyzhangqin的文章
原创 663 篇
翻译 11 篇
转载 17942 篇
评论 228 篇
挨踢老人的公告
点我聊QQ
最近评论
gracekeats:很有深度 想不到动计算机的人对文学也有如此境界
lv_ping:"朋友之交淡如水"?好像是"君子之交淡如水吧"!
wanxuesi:能不能给份源码啊?先谢了
邮箱:wanxuesi@163.com
wanxuesi:能不能给份源码啊?先谢了
邮箱:wanxuesi@163.com
shufangxieyang:我就是看脚来控制的
想象她的脚是顺时针转她就顺时针转
想象成逆时针她就逆时针转
但我第一眼看上去是顺时针的
而且从逆到顺要比从顺到逆好控制
文章分类
收藏
相册
超女里不多的美女
都是美女
好看好玩
著名的照片
技术
Cisco网络技术(Net130.Com)
CSS在线编辑
DotNet男孩社区
IP查询
Sunmoonfire's artistic matrix
UML软件工程组织
一个好博客(RSS)
中国协议分析网
中国项目管理网
微软帮助和支持
朋友
又一个好博客(RSS)
小人鱼的秘密
我的站长天下
其它
AC MILAN官网
Badged
deshow 在线制作服务
E书下载
IT公司速查手册
msn在线留言
Slide
Webfetti
东方资源
中华电脑书库
博客网址价值评估工具
我爱e书
我的下载Blog
存档
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

转载 C#3.0 中对象初始化器(Object Initializers)和集合初始化器(Collection Initializers) 。收藏

新一篇: 在查询语句中使用 NOLOCK 和 READPAST。 | 旧一篇: ASP.NET中的OutOfMemoryException。


edodo交友网

c# 3.0 中对象初始化器(Object Initializers)  和 集合初始化器(Collection Initializers) ,就是简化我们的代码,让本来几行才能写完的代码一行写完。这样在LINQ的使用中,我们才不会把一个LINQ表达式写的巨复杂无比。

 

由于我看到几篇讲 对象初始化器(Object Initializers)和集合初始化器(Collection Initializers) 的文章,都是一个简单的例子,一些稍稍特殊一点的场景的初始化赋值并没有涉及,所以我特整理这篇博客。

 

关于对象初始化器(Object Initializers) 的一些问题:

 

问题一: 对象初始化器允许只给部分值赋值么?即不给其中一些值赋值

答案:允许;参考后面的代码。

问题二:对象初始化器允许给internal 的成员赋值?(私有成员肯定不用想了,肯定不能赋值。)

答案:允许;参考下面的代码。

 

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    private int test01 = 25;
    internal int test02;
}

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person { FirstName = "Scott", LastName = "Guthrie", test02 = 56, };
        Console.WriteLine(person.test02);
        Console.WriteLine(person.Age);
        Console.ReadLine();
    }

}

 

问题三:对象初始化器是否可以结合构造函数一起使用?

答案:可以参看如下代码就可以正常使用:

var cookie3 = new System.Net.Cookie("MyCookie", "Jose") { Comment = "a cookie" };

我们在构造函数中给 Cookie 的名字和值赋了值,在初始化构造器中给 Comment 属性赋了值。

 

问题四:构造函数赋值和初始化构造器赋值那个最先被执行?

比如下述代码,结果是那个呢??

static void Main(string[] args)
{
    var cookie = new System.Net.Cookie("MyCookie", "Jose") { Name = "test02", Comment = "a cookie" };
    Console.WriteLine(cookie.Name);
    Console.ReadLine();
}

答案:

构造函数比初始化构造器更早被执行。

上述WriteLine 写出来的信息为:test02

 

集合初始化器(Collection Initializers) 的一些问题:

 

问题一:集合初始化构造器中是否可以构造集合的一项为空值?

答案:可以,参看下述代码。

 

问题二:集合初始化构造器是否可以初始化Hashtable ?

答案:可以。这时候相当于用了两个对象初始化构造器,参看下面代码:

 

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    private int test01 = 25;
    internal int test02;
}

class Program
{
    static void Main(string[] args)
    {
        List<Person> people = new List<Person>{
            new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
            new Person { FirstName = "Bill", LastName = "Gates", test02 = 85},
            new Person { FirstName = "Susanne", Age = 32 },
            null,
        };

        Hashtable pp = new Hashtable {
            { 1, new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 } },
            { 2, new Person { FirstName = "Bill", LastName = "Gates", test02 = 85} },
            { 3, new Person { FirstName = "Susanne", Age = 32 } },
            { 4, null },
                       };

        Console.ReadLine();
    }
}

 

 

参考资料:

Orcas中C#语言的新特性:自动属性,对象初始化器,和集合初始化器

C# 3.0 - Object and Collection Initializers

 
Google
 

发表于 @ 2007年07月06日 18:02:00|评论(loading...)|编辑

新一篇: 在查询语句中使用 NOLOCK 和 READPAST。 | 旧一篇: ASP.NET中的OutOfMemoryException。

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 挨踢老人