在 C# 中使用 属性 "get {}"、"set {}" 或“=>”语法时有什么不同吗?

Are there any differences when using Property "get {}", "set {}" or "=>" syntax in C#?

Code_1(这段代码使用了“=>”,为什么这两个代码的结果相同)

public class Infor<TFirst, TSecond, TThird>
{
    private TFirst first;
    private TSecond second;
    private TThird third;

    public TThird Third { get => third; set => third = value; }
    public TSecond Second { get => second; set => second = value; }
    public TFirst First { get => first; set => first = value; }
}

Code_2(此代码使用 "return" 而不是“=>”)

public class Infor<TFirst, TSecond, TThird>
{
    private TFirst first;
    private TSecond second;
    private TThird third;

    public TThird Third { get { return third; } set { third = value; } }
    public TSecond Second { get { return second; } set { second = value; } }
    public TFrist First { get { return first; } set { first = value; } }
}

这两个代码示例之间没有区别。 这也适用于函数,如果您只有一个内部操作,其结果可以立即从函数返回。例如:

int Method(int x)
{
    return x;
}

相当于:

int Method(int x) => x;

没有区别。 C# 编译器在内部将 MyProperty { get {set { 语法转换为编译器发出的具有以下签名和实现的方法:

TFirst get_MyProperty() { return first;}
void set_MyProperty(TFirst value) { first = value; }

=> 语法也是如此,称为 expression bodied property accessors=> 的用法仅仅是一个 syntactic sugar,它的创建是为了简化编码并减少必须重复编写的样板代码。

可以处理它的编译器存在差异。

表达式主体 属性 访问器是 C# 7 的一项功能。因此,例如,C# 6 编译器会将其视为错误。