具有属性但很少分配的属性的类

时间:2010-09-01 17:58:14

标签: c#

我有c#class我有不同的属性。

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个属性但没有分配很少的类,它会破坏应用程序吗?

请分享您的想法。生产中有一些代码,我不确定结果,所以检查。

4 个答案:

答案 0 :(得分:3)

如果您的网络服务方法返回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 :(得分:2)

在初始构造之后(在调用构造函数之前),所有字段都处于初始(0或null)状态。对于更复杂的值类型,它们的所有字段都处于初始(0或null)状态,依此类推,递归。

答案 2 :(得分:1)

它不会破坏应用程序,属性将具有其默认值 - 对象和字符串将设置为null,布尔值设置为false,整数/浮点数/双精度将设置为0 ,chars to '\0'等 如果访问尚未设置的对象属性而未将其检查为null,则只会遇到空引用异常。

答案 3 :(得分: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;