C#里=>的两种用法

C#里=>的两种用法
C#里的=>有两种用法:

用于Lambda表达式里,此时的=>被称为lambda operator
用于expression-bodied member

第一种用法
第一种用法,比较好理解,其实就是Lambda表达式的写法,在C# 3到C# 5版本间,=>只有此种用法。此时的=>C++的lambda表达式里的->类似,举个例子:

所以,上面的MathHealth1和MathHealth2的区别,其实就是C#里Property和Field的区别:

MaxHealth1是一个Property,设置了getter,每次访问该值的时候,都会调用x?y:z表达式
MathHeath2是一个Field,它的表达式只会在其初始化时计算一次
其实应该说的很清楚了,再举个例子:

class Program
{
    public class A
    {
        public static int x;//默认初始化为0
        public int X1 => x;
        public int X2 = x;
    }


    static void Main()
    {
        Console.WriteLine(A.x);// 0

        A a = new A();
        Console.WriteLine(a.X1);// 0
        Console.WriteLine(a.X2);// 0

        A.x = 5;
        Console.WriteLine(a.X1);// 5
        Console.WriteLine(a.X2);// 0

        A.x = 10;
        Console.WriteLine(a.X1);// 10
        Console.WriteLine(a.X2);// 0
    }
}

可以看到,每次去取X1的值的时候,都会执行return x;这个表达式,所以上面的问题解决了。

posted on 2023-08-12 22:45  manber  阅读(201)  评论(0)    收藏  举报

导航