清除对象变量

本文关键字:变量 对象 清除 | 更新日期: 2023-09-27 18:33:46

这是我的类名称。

class Designation
{
    private string strDesigNo;
    private string strDesigName;
    private string strDesigDesc;
    public string DesigNo
    {
        set { strDesigNo = value; }
        get { return strDesigNo; }
    }
    public string DesigName
    {
        set { strDesigName = value; }
        get { return strDesigName; }
    }
    public string DesigDesc
    {
        set { strDesigDesc = value; }
        get { return strDesigDesc; }
    }
}

在我的用户界面窗体中,单击"保存"按钮,我将值分配给我的部门类,然后将其发送到另一个类中的保存方法,如下所示。

private void btnSave_Click(object sender, EventArgs e)
{  
    if(!string.IsNullOrEmpty(txtDesignationNumber.Text.Trim().ToString())) 
    { 
        if (!string.IsNullOrEmpty(txtDesignationName.Text.Trim().ToString())) 
        {         
            if(!string.IsNullOrEmpty(txtDesignationtDescription.Text.Trim().ToString())) 
            {
                objDesignation.DesigNo = txtDesignationNumber.Text.Trim().ToString();
                objDesignation.DesigName = txtDesignationName.Text.Trim().ToString();
                objDesignation.DesigDesc=txtDesignationtDescription.Text.Trim().ToString(); 
                objDesignationBLL.insertDesignation(objDesignation);
            }
        }
    }
}

我需要的是将对象值发送到插入指定方法后立即清除所有值。

这意味着我需要它如下。

objDesignation.DesigNo ='';
objDesignation.DesigName = '';
objDesignation.DesigDesc = '';

是否有一种好的做法,在不释放对象或不将对象设置为 null 的情况下将这些对象变量值清空为 null?

清除对象变量

如果要重置变量,只需分配一个新实例:

objDesignation = new Designation();

好吧,我建议对局部任务使用局部变量

  Designation objDesignation = new ...
  // Let's avoid arrow head antipattern:
  // if any of Text is significant (i.e. has non-whitespace items)  
  // then insert a designation 
  if (new [] {
        txtDesignationNumber.Text, 
        txtDesignationName.Text, 
        txtDesignationtDescription.Text}
      .Any(c => !String.IsNullOrWhiteSpace(c)) {
    // create and insert a Designation;
    // there's no need to expose dsgn to the outer scope
    var dsgn = new Designation() {
      DesigNo = txtDesignationNumber.Text.Trim(),
      DesigName = txtDesignationName.Text.Trim(),
      DesigDesc = txtDesignationtDescription.Text.Trim()
    };
    objDesignationBLL.insertDesignation(dsgn);
  }
  // objDesignation hasn´t been changed
  objDesignation...

这就是我重新构建该类的方式:

class Designation
{
    public string Number { get;set; }
    public string Name { get;set; }
    public string Description { get;set; }
    public void Clear()
    {
        this.Number = string.Empty;
        this.Name = string.Empty;
        this.Description = string.Empty;
    }
}

我添加了方法Clear()该方法在调用时应重置属性:

objDesignation.Clear()

我个人会再次刷新Designation实例:

objDesignation = new Designation()

完成数据后。


顺便说一句,我建议您尽可能明确地使用变量名称。只是为了从长远来看更容易记住发生了什么。