经常混淆的几点语法

来源:互联网 发布:淘宝上怎么投诉卖家 编辑:程序博客网 时间:2024/05/09 01:33

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

           //1.对象初始化(器),它能初始化一个对象中的所有允许访问的字段和属性。具体地说,在创建对象的构造器调用之后,你现在可以增加一对大括号,并在其中添加一个成员初始化列表。每个成员的初始化操作都是一个赋值操作,等号左边是一个允许访问的字段属性,右边则是具体要赋的值。

            MyClass cls = new MyClass() { Age = 12, Name = "zhang" };
            cls.fun();

            //2.数组初始化
            string[] str = { "1","2","3"};
            string[] str1 = new string[] { "a", "b", "c" };
            //3.集合初始化(器)
            List<string> str2 = new List<string> { "1a", "2b", "3c" };

            //4.匿名类,后部{}内是类的主体定义,类中没有方法(与 1对象初始化器 比较),只能包含public字段,字段必须全部初始化,不可以是static字段,p1最终的结果仍为一强类型结果。          编译器会根据初始化字段的数据类型来推断出字段的类型
            var p1= new { ID = 123456, Name = "张三" };

           var p2= new { ID = 123, Name = "li" };//p1、p2是同一类型

           var p3= new {Name = "li", ID = 123 };//p3和p1、p2不是同一类型       

            //5.创建隐式类型转换的数组,则运行后names是一个string类型的数组(注意后面赋的初值都是相同类型的,在这里是string类型)

            var names=new[]  {"John","Diana","James"};

          //这种方式尤其适用于匿名类型

           var name=new[] {new {ID = 123456, Name = "张三"},

                                            new {ID = 123, Name = "haha"},

                                          new {ID = 456, Name = “wuwu"},

            }

        }

        //6.自动属性,代码中没有对应字段,由编译器自动生成
        public static int Age
        {
            get;
            set;
        }
    }

    class MyClass
    {
        int age;

        public  int Age
        {
            get { return age; }
            set { age = value; }
        }
        string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        public void fun()
        {
            Console.WriteLine("fun");
        }
    }