2016-02-09 91 views
4

這是我的班級指定。清除對象變量

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類,然後把它保存在另一個類的方法如下。

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?

+0

你不將其設置爲null ....你要分配空string..Generally您將部署objDesignation不是其個人財產....處理objDesignation應該處理任何需要釋放的內部引用..... – Viru

+0

我會刪除那些'Desig'前綴並且只是擁有該屬性的全名,所以它準確地描述了該屬性是什麼數據應該保留 –

+1

儘管你可以使用任何語言編寫Java或Pascal,但最好熟悉推薦的實踐和代碼 - 您實際使用的語言的風格約定。 –

回答

11

如果要重置您的變量,你可以只分配一個新的實例:

objDesignation = new Designation(); 
+0

它的工作原理。但分配新的實例很多次....它會給一個內存容量?或者是安全的?請解釋一下 –

+0

你的對象是幾個字節大。如果它超出範圍,垃圾回收器進入並釋放內存。別擔心。 –

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

一旦你的數據來完成。


另外,我建議你儘可能明確你的變量名。從長遠來看,記住發生的事情會更容易。

+0

想到這種情況。 我的DesigDesc變量是null.So它不是強制性的。 我保存第一條記錄如下。 objDesignation.DesigNo ='001'; objDesignation.DesigName ='Store Excecutive'; objDesignation.DesigDesc ='收取店鋪'; 現在我保存這個並來到下一個記錄,我沒有一個DesigDesc。 現在的問題是,當插入它抓取最後一個記錄的值。 我知道這應該避免,同時驗證我的參數。但除此之外是有解決方案?(創建新的實例解決我的問題確定。)任何評論 –

+0

你應該把它放在你原來的問題。我不確定你的問題是什麼,在我看來,你似乎有更大的設計問題,應該作爲一個新問題提出。 –

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