C# 3.0语言新特性(二)

1对象与集合初始化器

例子:

#region Object and Collections Initializers starts

        public class Point

        {

            private int x, y;

 

            public int X

            {

                get

                {

                    return x;

                }

                set

                {

                    x = value;

                }

            }

 

            public int Y

            {

                get

                {

                    return y;

                }

                set

                {

                    y = value;

                 }

            }

        }

 

        public class Rectangle

        {

            Point p1 = new Point();

            Point p2 = new Point();

 

            private List<string> lisPhoneNumbers = new List<string>();

 

            public Point P1

            {

                get

                {

                    return p1;

                }

            }

 

            public Point P2

            {

                get

                {

                    return p2;

                }

            }

 

            public List<string> PhoneNumbers

            {

                get

                {

                    return lisPhoneNumbers;

                }

            }

        }

 

        void ObjectInitializers()

        {

            var r = new Rectangle

            {

                P1 = { X = 0, Y = 1 },

                P2 = { X = 2, Y = 3 },

                PhoneNumbers = {"123", "321" }

            };

        }

        #endregion Object and Collections Initializers ends

 

当我们使用ObjectInitializers()方法时,

相当于

var r = new Rectangle();

r.P1 = new Point ();

r.P1.X = 0; r.P1.Y = 1;

r.P2 = new Point();

r.P2.X = 2; r.P2.Y = 3;

r.PhoneNumbers = new List<String>{"123", "321" };

 

要点:对象初始化器实际上利用了编译器对对象中对外可见的字段和属性进行按序赋值

集合初始化器会对初始化器中的元素进行按序调用ICollection<T>.Add(T).

该技术也是编译时技术

 

2 匿名方法

允许以下的声明:

var p1 = new {Name=”Lawnmower”,Price = 495.00};

var p2 = new {Name=”Shovel”,Price=26.95};

p1 = p2;

可以使用new关键字调用匿名初始化器创建一个匿名类型的对象。

匿名类型直接继承于system.Object

匿名类型的成员是编译器根据初始化器推断类的。

                      (待续)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值