C#3.0语言功能

1.隐式类型局部变量:

      用var关键字声明变量类型:

      var myint=0;

      var mybool=true;

      var mystring="some  string";

   (1)隐式类型变量的限制:

           不能用作类的数据成员;

           不可以作为方法的返回值;

           声明时必须赋值且不能赋值为NULL;

           隐式类型局部数组:

                  //正确声明

                  var a=new[] {1,2,3,4};

                  //错误声明

                  var b=new[] {2.three,4,five};

2.自动属性:

           可以将:

                 private string strName

                 public string PName

                {

                       get {return strName;}

                       set  {strName=value;}

                 }

           直接写成:

                    private string strName

                 public string PName

                {

                       get ;set;

                 }

3.扩展方法:

      扩展方法允许先存已编译的类型和当前即将编译的类型在不需要被直接更新的情况下,获得功能上的扩展。

      (1)扩展方法的限制:

              必须把方法定义在静态类中,因此每个方法也必须声明为静态;

              所有的扩展方法都需要使用关键字this对第一个参数(仅对第一个)进行修饰;

              每个扩展方法只可以被内存中正确的实例调用,或者通过其所处的静态类被调用。

       static class TestUtilClass

      {

            public static void Foo(this int i)
             {
                Console.WriteLine("{0} called the Foo() method.", i);
             }

             public static void Foo(this int i, string msg)
            {
               Console.WriteLine("{0} called Foo() and told me:{1}", i, msg);
            }

      }

      (2)把一些包含扩展方法的静态类型放到独立的命名空间中后,处于同一程序集的其他命名空间可以使用标准的C#关键字using导入这些静态类型和他们包含的扩展方法。

      (3)微软公司推荐把扩展方法房在独立的程序集(独立的命名空间)。

4.分部方法:

      (1)分部方法的限制:

              分部方法只可以定义在分部类中;

              分部方法可以是静态的或实例级别的;

              分部放啊可以有参数(不能有OUT修饰符);

              分部方法总是隐式私有的; 

5.对象初始化器:

      class point
    {
        private int xPos, yPos;

        public point(int x, int y)
        {
            xPos = x;
            yPos = y;
        }

        public point() { }
        public int X
        {
            get {return xPos;}
            set {xPos=value;}
        }

        public int Y
        {
            get { return yPos; }
            set { yPos = value; }
        }

        public override string ToString()
        {
            return string.Format("[{0},{1}]",xPos,yPos);
        }

 

       class Program
    {
        static void Main(string[] args)
        {

            var yetAnotherpoint = new point { X = 30, Y = 30 };
            point finalpoint = new point{X = 30, Y = 30};
            Console.ReadLine();
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值