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;这个表达式,所以上面的问题解决了。
浙公网安备 33010602011771号