Bootstrap

C#技术点

一、推断类型var关键字

1:var根据变量的初始值自动判断局部变量类型

 static void Main(string[] args)
        {
            var a = 100;
            var Name = ".NET开发";
          
            Console.WriteLine($"共有{a} 个人学习{Name}");
            Console.ReadKey();
        }

输出:共有100 个人学习.NET开发

2:注意点

var只能定义在局部变量,而不能定义成员变量

定义的时候必须同时完成赋值,而且不能使用var变量定义为null

var不是一个新类型,只是用来修饰一个推断出具体类型的局部变量

3:var 定义变量和普通定义的变量没有任何区别

var a = 100;           
int b = 100;

二、什么是匿名类

1:匿名类就是没有具体的对象

 static void Main(string[] args)
        {
            var Person = new
            {
                Name = "小张",
                Age = 25,
                ClassName = "高级班"
            };
            Console.WriteLine("姓名:{0} 年龄:{1} 班级:{2}",
                Person.Name, Person.Age, Person.ClassName);
            Console.ReadKey();
        }

输出:姓名:小张 年龄:25 班级:高级班

2:匿名类的特点

直接用new关键字创建对象,使用var定义对象变量

不要提前创建类,编写类的成员属性,而且只能添加独享的属性

三、匿名方法

1:匿名方法就是这个方法没有具体名字,而只有委托关键字,方法参数,方法体

//【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
        public delegate int CalculatorDelegate(int a, int b);
        static void Main(string[] args)
        {

            //委托变量接收一个匿名方法
            CalculatorDelegate Cal = delegate (int a, int b)
            {
                return a + b;
            };
            int result = Cal(10, 20);
            Console.WriteLine("10+20={0}", result);
            Console.ReadKey();
        }

 输出:10+20=30

四、Lambda表达式(参数列表)=>{方法体}

1:Lambda表达式,可以简练编写代码块

        //【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
        public delegate int CalculatorDelegate(int a, int b);
        static void Main(string[] args)
        {

            //委托变量接收一个匿名方法
            CalculatorDelegate Cal =  (int a, int b) => { return a + b; }; // => goes to
            int result = Cal(10, 20);
            Console.WriteLine("10+20={0}", result);
            Console.ReadKey();
        }

输出:10+20=30 

2:参数列表中参数类型可以是“明确”类型或者“推断”类型

如果是推断类型,则参数的数据类型将由编译器根据值自动推断出来

 //【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
        public delegate int CalculatorDelegate(int a, int b);
        static void Main(string[] args)
        {

            //委托变量接收一个匿名方法
            CalculatorDelegate Cal =  (a,b) => { return a + b; }; // => goes to
            int result = Cal(10, 20);
            Console.WriteLine("10+20={0}", result);
            Console.ReadKey();
        }

输出:10+20=30 

3:如果参数只有一个,可以省略(),如果方法体只有一行代码可以省略{}

        //【1】声明委托(定义一个函数的原型:返回值 + 参数类型和个数)
        public delegate int CalculatorDelegate(int a);
        static void Main(string[] args)
        {

            //委托变量接收一个匿名方法
            CalculatorDelegate Cal = a => a ; // => goes to
            int result = Cal(10);
            Console.WriteLine("{0}", result);
            Console.ReadKey();
        }

输出:10

4:Lambda与匿名方法的比较

Lambda表达式本身就是匿名方法

Lambda表达式参数允许不指明参数类型,匿名方法的参数必须明确指出参数类型

Lambda表达式允许由单一表达式或者多条语句组成,而匿名方法不允许单一表达式形式

;