构造函数中优雅的参数

本文关键字:参数 构造函数 | 更新日期: 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
  ...
  );

如果参数名称更具自描述性,则也会更好

您可以创建一个包含所有参数的对象并将其传递。事实上,他们中有这么多人告诉你,他们可能有某种关系,无论如何都值得上一堂课。