Возможно, вы думаете о новом синтаксисе инициализатора объекта в 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 };
Обратите внимание, что это только для конструирования экземпляров, а не для передачи параметров в методы, как показывает ваш пример, так что это может быть не тем, о чем вы думаете.