C# => 符号的用法

C# => 符号的用法

最近看到一种写法让我感到迷惑,之前一直以为=>是Lambda表达式的写法,现在遇到的明显不是,所以就记录一下。

// 这里的MaxHealth1和MaxHealth2有什么区别?
public class Health
{
	// expression-bodied member property
	public int MaxHealth1 => x ? y:z;
	// field with field initializer
	public int MaxHealth2 = x ? y:z;
};

C#里=>的两种用法

1.Lambda中的用法
在C# 3到C# 5版本间,=>只有此种用法。
下面是我平常用到的:

useCard.transform.DOMove(targetObject.position,0.3f).OnComplete(
        ()=>
        {
            useCard.transform.SetParent(targetObject,false);
            useCard.transform.localPosition = Vector2.zero;
            //useCard.transform.localScale= Vector2.one;
            useCard.GetComponent<Card>().isMoving = false;
            
        }
        );

类似于()=>{}这种,小括号里面是方法的参数,大括号里面是方法体,构成了这个匿名函数。
2.在变量声明的时候的用法
在C# 6的版本里,=>开始用于expression-bodied members,代码如下:

public bool Jump => playerInputActions.Gameplay.Jump.WasPressedThisFrame();
public bool StopJump => playerInputActions.Gameplay.Jump.WasReleasedThisFrame();
public bool Move => AxisX != 0f;
public float AxisX => axes.x;

而这种语法,是一种Syntax Sugar,上面的代码等同于下面的:

public bool Move
{
	get
	{
		return   Axisx!=0;
    }
}
public bool AxisX
{
	get
	{
		return   axes.x;
    }
}

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

MaxHealth1是一个Property,设置了getter,每次访问该值的时候,都会调用x?y:z表达式
MathHeath2是一个Field,它的表达式只会在其初始化时计算一次。

参考了博主「弹吉他的小刘鸭」的文章,
原文链接:https://blog.csdn.net/alexhu2010q/article/details/118439345

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值