2010-09-01 95 views
1

我有c#類,我有不同的屬性。有屬性的類但沒有賦值的屬性很少

public class Employee 
{ 
    public int ID; 
    public string Name; 
    public int Age; 
} 

WebServices pp=new WebServices(); 

Employee emp= pp.GetEmpInfo(); 
//pp is an instance of webservices which is web referenced in the app. 

emp.ID=100; 
emp.Age=25; 

我不會爲GetEmpInfo()分配/獲得名稱返回值,是否會拋出任何異常?

如果你有一個包含10個屬性的類,並且不會指定很少的屬性,它是否會破壞應用程序?

請分享您的想法。生產中有一些代碼,我不確定結果,所以我正在檢查。

+1

那些不屬性,它們是字段。屬性獲取和/或設置方法。 – 2010-09-01 18:03:15

回答

1

它不會中斷應用程序,該屬性將有自己的缺省值 - 對象和字符串將被設置爲null,布爾到false,整數/浮點數/加倍到0,字符到'\0'
您只有訪問尚未設置對象屬性,不檢查他們可能會遇到空引用異常空值。

+0

謝謝,類似的字符串將默認設置爲空,是否正確?該方法將一直返回,只有不是所有的屬性都會被分配。 – Sharpeye500 2010-09-01 18:35:24

+0

一個字符串將被設置爲'null',而不是一個空字符串,要小心! – 2010-09-01 20:22:14

2

初始構建(調用構造函數之前)後,所有字段都處於初始(0或null)狀態。對於更復雜的值類型,它們的所有字段都以遞歸方式初始(0或空)狀態等等。

3

如果你的Web服務方法返回null

[WebMethod] 
public Employee GetEmpInfo() 
{ 
    return null; 
} 

那麼下面將拋出一個NullReferenceException

emp.ID = 100; 

因爲emp變量不會被分配。

爲了避免這種驗證,如果變量訪問其屬性之前被分配(或你的情況公共字段):

Employee emp = pp.GetEmpInfo(); 
if (emp != null) 
{ 
    emp.ID = 100; 
    emp.Age = 25; 
} 
1

如果GetEmpInfo()未返回值,則emp仍然爲空。因此,當你打電話給emp的一個屬性(或在你的情況下,一個字段),例如當你打電話給emp.ID=100時,你會得到一個System.NullReferenceException(對象引用沒有設置爲對象的一個​​實例)。您可能會在您的代碼中添加空檢查:

Employee emp= pp.GetEmpInfo(); 
//pp is an instance of webservices which is web referenced in the app. 

if (emp == null) 
{ 
    //you might choose to throw an error or set it to a new 
    //instance of an object. 
    emp = new Employee(); 
} 

emp.ID=100; 
emp.Age=25;