清除对象变量

时间:2016-02-09 11:04:22

标签: c#

这是我的班级名称。

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; }
    }
}

在我的用户界面表单中单击“保存”按钮我将值分配给我的Department类,然后将其发送到另一个类中的save方法,如下所示。

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);
            }
        }
    }
}

//我需要的是在将对象值发送到insertDesignation方法后立即清除所有值。

//这意味着我需要它如下。

objDesignation.DesigNo ='';

objDesignation.DesigName = '';

objDesignation.DesigDesc = '';

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

3 个答案:

答案 0 :(得分:14)

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

objDesignation = new Designation();

答案 1 :(得分:1)

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

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()

完成数据后。

顺便说一句,我建议你尽可能明确地使用变量名。因此,从长远来看,记住发生的事情会更容易。

答案 2 :(得分:1)

好吧,我建议将本地变量用于本地任务

  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...