Существуют ли различия при использовании синтаксиса свойства "get {}", "set {}" или "=>" в 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; } }
}
3 ответа
Нет, различий нет. Внутренне C# компилятор преобразует MyProperty { get {
или же set {
Синтаксис методов, генерируемых компилятором, со следующими сигнатурами и реализациями:
TFirst get_MyProperty() { return first;}
void set_MyProperty(TFirst value) { first = value; }
То же самое происходит для =>
Синтаксис, который называется expression bodied property accessors
, Использование =>
это просто syntactic sugar
который был создан для упрощения кодирования и сокращения стандартного кода, который должен быть написан повторно.
Нет никакой разницы между этими двумя примерами кода. Это также работает с функциями, если у вас есть только одна внутренняя операция с результатом, который может быть немедленно возвращен из функции. Например:
int Method(int x)
{
return x;
}
Эквивалентно:
int Method(int x) => x;
Есть различия в компиляторах, которые могут справиться с этим.
Средства доступа к свойствам Expression - это функция C# 7. Так, например, компилятор C# 6 сочтет это ошибкой.