是否有一种优雅的方法可以将多个参数传递给构造函数?
这是我的构造函数:
public _Empresa(string n, string r, string d, int l, string c, string f, string t, string m, string o)
{
e_nombre = n;
e_rfc = r;
e_direccion = d;
e_delegacion = l;
e_cp = c;
e_referencias = f;
e_telefono = t;
e_email = m;
e_observaciones = o;
}
最近在Windows窗体中我调用了构造函数
public _Empresa empresa
{
get
{
return new _Empresa(_nombre.Text, _rfc.Text, _direccion.Text, int.Parse(_delegacion.SelectedValue.ToString()), _cp.Text, _referencias.Text, _telefono.Text, _email.Text, _observaciones.Text);
}
}
它们的类型不同,因此无法发送数组。我还有其他选择吗?
答案 0 :(得分:4)
您可以在构造函数中传入一个具有所需属性的类。
参数类
public class EmpresaConstructorArguments
{
public string Nombre { get;set }
// ...
}
构造函数
public _Empresa(EmpresaConstructorArguments arg)
{
e_nombre = arg.Nombre;
// ...
}
或强>
private EmpresaConstructorArguments Arguments;
public _Empresa(EmpresaConstructorArguments arg)
{
this.Arguments = arg;
}
结帐MSDN - ProcessStartInfo Class。
指定启动进程时使用的一组值。
另一种方法是使用命名参数传递值。
假设你的班级看起来像这样
public _Empresa empresa
{
public string Nombre { get; set }
// ...
}
you can do
new _Empresa { Nombre : _nombre.Text }
答案 1 :(得分:2)
如果其中一些属性是相关的,您可以将它们分组为较小的类(因此您可以将该类的实例传递给类的构造函数)。但是,这只会将初始化扩展到两个或三个较小的对象,因此只有在对代码具有逻辑意义时才应该这样做,而不仅仅是为了使构造函数更具可读性。
使代码更具可读性的一件事是使用命名参数和一些缩进:
new _Empresa(
n: _nombre.Text,
r: _rfc.Text
...
);
如果参数名称更具自我描述性,那么它看起来也会更好
答案 2 :(得分:1)
您可以创建一个包含所有参数的对象,然后传递它。 他们中有很多人告诉你他们可能有某种关系可能值得上课。