在 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 编译器会将其视为错误。
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 编译器会将其视为错误。