构造函数中优雅的参数
本文关键字:参数 构造函数 | 更新日期: 2023-09-27 18:27:53
有没有一种优雅的方法可以将多个参数传递给构造函数?
这是我的构造函数:
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);
}
}
它们不是同一类型,所以没有机会发送数组。我还有什么其他选择?
描述
您可以传入一个类,该类具有构造函数中所需的属性。
样品
arguments类
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类。
指定启动进程时使用的一组值。
更新
另一种方法是传递带有命名参数的值。
假设你的课看起来像这个
public _Empresa empresa
{
public string Nombre { get; set }
// ...
}
you can do
new _Empresa { Nombre : _nombre.Text }
如果其中一些属性是相关的,您可以将它们单独分组为较小的类(这样您就可以将该类的实例传递给类的构造函数)。然而,这只会将初始化扩展到两个或三个较小的对象,因此只有在对代码有逻辑意义的情况下才应该这样做,而不仅仅是为了使构造函数更可读。
有一件事可以让你的代码更可读,那就是使用命名参数和一些缩进:
new _Empresa(
n: _nombre.Text,
r: _rfc.Text
...
);
如果参数名称更具自描述性,则也会更好
您可以创建一个包含所有参数的对象并将其传递。事实上,他们中有这么多人告诉你,他们可能有某种关系,无论如何都值得上一堂课。