C#Object Constructor – 简写属性语法

几个月前,我读到了一种技术,如果传入的参数与局部变量匹配,那么你可以使用一些简短的语法来设置它们。 为了避免这种情况

public string Method(p1, p2, p3) { this.p1 = p1; this.p2 = p2; this.p3 = p3; } 

有任何想法吗?

您可能正在考虑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”的示例中。