我有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个属性但没有分配很少的类,它会破坏应用程序吗?
请分享您的想法。生产中有一些代码,我不确定结果,所以检查。
答案 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;