Несколько месяцев назад я прочитал о технике, согласно которой, если параметры, которые вы передали, совпадают с локальными переменными, вы можете использовать короткий синтаксис для их установки. Чтобы этого избежать:
public string Method(p1, p2, p3)
{
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}
Любые идеи?
3 ответа
Возможно, вы думаете о синтаксисе инициализатора нового объекта в C # 3.0. Это выглядит так:
var foo = new Foo { Bar = 1, Fizz = "hello" };
Таким образом, мы получаем новый экземпляр Foo со свойством «Bar», инициализированным значением 1, и свойством «Fizz» значением «hello».
Уловка с этим синтаксисом заключается в том, что если вы опустите «=» и предоставите идентификатор, он будет предполагать, что вы назначаете свойство с тем же именем. Так, например, если бы у меня уже был экземпляр Foo, я мог бы сделать это:
var foo2 = new Foo { foo1.Bar, foo1.Fizz };
Это очень похоже на ваш пример. Если ваш класс имеет свойства p1, p2 и p3 и у вас есть переменные с тем же именем, вы можете написать:
var foo = new Foo { p1, p2, p3 };
Обратите внимание, что это предназначено только для создания экземпляров, а не для передачи параметров в методы, как показывает ваш пример, поэтому это может быть не то, о чем вы думаете.
Возможно, вы думаете об «инициализаторе объекта» в C #, где вы можете создать объект, задав свойства класса, а не используя параметризованный конструктор.
Я не уверен, что это можно использовать в вашем примере, поскольку ваше "this" уже создано.
В C # 7 есть еще более простой способ сделать это - конструкторы с выражением.
Используя приведенный выше пример, ваш конструктор можно упростить до одной строки кода. Я включил поля класса для полноты, полагаю, они все равно будут в вашем классе.
private string _p1;
private int _p2;
private bool _p3;
public Method(string p1, int p2, bool p3) => (_p1, _p2, _p3) = (p1, p2, p3);
См. Следующую ссылку для получения дополнительной информации: -
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.