几个月前,我读到了一项技术,如果您传入的参数与局部变量匹配,那么您可以使用一些简写语法来设置它们。为避免这种情况:
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# 对象构造函数 - 简写属性语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506635/