2017-01-28 78 views
-1

我在我的代碼上實現了getters和setter,但是我的getter和setter有問題,它在setter中使用驗證代碼時總是返回null,這是我的代碼:C#getter和setter在添加驗證時返回null

private string _employeeId; 

public string EmployeeId 
{ 
    get 
    { 
     return this._employeeId 
    } 
    set 
    { 
     if (!String.IsNullOrEmpty(this._employeeId)) 
     { 
      this._employeeId = value; 
     } 
     else 
     { 
      throw new Exception("Employee ID is required"); 
     } 
    } 
} 

,並在我的申請,我通過 分配_employeeId的價值創造類

Employees obj = new Employees(); 

obj.EmployeeId = txt_empId.Text; 
+5

大概你想驗證'價值'。否則'_employeeId'將始終爲空,所以它總是無法通過驗證,因此永遠不會被分配。 – Abion47

+0

我這樣做對面的方式取得一樣n反之亦然 – Sreemat

回答

4

的制定者正試圖設置局部變量的對象,但絕不會設置它,因爲IsNullOrEmpty(this._employeeId)返回true,防止它被設置。也許你打算在value上檢查IsNullOrEmpty ??

-2

在您的代碼中,變量_employeeId爲空,因爲您沒有爲其設置初始值。並在set方法中驗證_employeeId變量,所以這個結果總是爲null,然後拋出Exception!我想你想驗證一個值什麼是設置方法輸入值。所以你必須驗證變量value,而不是變量_employeeId

private string _employeeId; 

public string EmployeeId 
{ 
    get 
    { 
     return this._employeeId 
    } 
    set 
    { 
     if (!String.IsNullOrEmpty(value)) 
     { 
      this._employeeId = value; 
     } 
     else 
     { 
      throw new Exception("Employee ID is required"); 
     } 
    } 
} 
+0

也許我需要學習更多的學習這門語言,感謝您的幫助! –

+0

是的,只要繼續! –

+0

@JohanShen:雖然這段代碼確實解決了這個問題,但最好解釋一下*你改變了什麼,爲什麼改變了*爲什麼*所以每個人都清楚這是如何解決問題的。您可能想閱讀[回答]以獲取更多信息。 – Aurora0001