当前位置:编程学习 > C#/ASP.NET >>

C#3.0特性总结

1:隐式类型的本地变量和数组

2:对象初始值设定项

3:集合初始值设定项

4:自动实现属性

5:匿名类型

6:扩展方法

7:分部方法定义

8:Lambda 表达式

 

关键字(var)

1:var可以用局部变量声明不可以用于字段可以应用于for、foreach、using语句中

2:var关键字不能包含自身对象或者集合初始化器,但可以经过new的新表达式

   例:var  result;//编译错误

       var  result=result+1;//编译错误

       var  result={1,2,3};//编译错误

3:var是推断类型,不是显示类型

4:var关键字指示编译器根据初始化语句右侧的表达式推断变量的类型

5:推断类型可以是内置类型、匿名类型、用户定义类型、.NET Framework 类库中定义的类型或任何表达式

注:var关键字并不意味着“变体”,也不表示该变量时松散类型化变量或后期绑定变量。它只是表示由编译器确定和分配最适合的类型

 

var 使用的场景

1:局部变量

   例:var i = 5;

2:在for初始化语句

   例:for(var i = 1; i < 10; ++i)

3:在foreach初始化语句

例:foreach(var item in list)

4:在using语句

   例:using(var file = new StreamReader("C:"))

 

一:隐式类型的本地变量和数组

注:隐形数组使用var关键字和数组初始化器创建。元素的数据类型必须能够隐式转换为同一数据类型,并且不能为空(null)

       1:没有在初始化语句的左侧隐式类型的数组使用方括号

2:支持交错数组,不支持多维数组

       例:var a = new [] {1,2,3} //一维数组

              var b = new []

                     {

                            new [] {1,2,3},

                            new [] {5,6}

                     }; //交错数组

 

二:对象初始值设定项

注:对象初始化器由一系列成员对象组成,其对象必须初始化,用逗号间隔,使用{}封闭

1.NET 2.0写法:

    User  userInfo = new User();

    userInfo.ID = “zhuxing”;

    userInfo.Name = “czx”;

    userInfo.Age= 22;

2.NET 3.5写法:

     User userInfo = new User() {ID = “zhuxing”, Name = “czx”,  Age=22};

注:嵌套复杂属性类型

User userInfo = new User()

{

     ID=“zhuxing”,

     Name=“czx”,

     Address =new Address()

    {

        Province=“FuJian”,

        City=“ningde”

     }

};

1:可以和构造函数一起使用,并且构造函数初始化先于对象初始化器执行

2:允许部分赋值 

3:允许给internal 成员赋值 

public class user

    {

        public String Name { get; set; }

        public String Age { get; set; }

        private Int32 test = 25;

        internal Int32 test2;

    }

 

   public class Program

    {

        static void Main(string[] args)

        {

            user person = new user { Name = "张三", Age = "男", test2 = 20 };

            Console.WriteLine("{0},{1},{2}",person.Name, person.Age, person.test2);

            Console.ReadLine();

        }

}

//和构造函数一起使用

public class user

    {

        public String Name { get; set; }

        public Int32 Age { get; set; }

        private Int32 test = 25;

        internal Int32 test2;

        public user(Int32 Age)

        {

            this.Age = Age;

        }

  }

public class Program

    {

        static void Main(string[] args)

        {

            user person = new user(20) { Name = "张三", Age = 22, test2 = 20 };

            Console.WriteLine("{0},{1},{2}",person.Name, person.Age, person.test2);

            Console.ReadLine();

        }

 }

三:集合初始值设定项

注: 

1:集合初始化器由一系列集合对象组成,用逗号间隔,使用{}封闭。

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

例如:List<int> number=new List<int>{1,2,3,4,5};

//集合初始化器

    public class parame

    {

        public String Name { get; set; }

        public Int32 Age { get; set; }

    }

 

    public class Program

    {

        static void Main(string[] args)

        {

          IList<parame> people = new List<parame>()

          {

   &

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,