问题描述
公共 class object=new class()
和 public class object{get;set;}
有什么区别。
当我尝试 public ProviderPInfo obj = new ProviderPInfo();
时它是完美的,但是
当我尝试这个 public ProviderPInfo providerpersonalinfo { get; set;}
时,它给了我:
System.NullReferenceException
: '未将对象引用设置为对象的实例。'**
模型类:
public class ProviderPInfo
{
public string UserID { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
public string MobilePhone { get; set; }
public Nullable<byte> UserType { get; set; }
public Nullable<bool> Status { get; set; }
}
对象所在的类;
public class provider {
public ProviderPInfo obj = new ProviderPInfo();
public ProviderPInfo providerpersonalinfo { get; set;}
}
List<User> objList = db.Users.Where(x => x.UserType == 50).ToList();
List<provider> retobj = new List<provider>();
foreach (var item in objList)
{
provider obj = new provider();
//obj.providerpersonalinfo=
try
{
//string a = item.FirstName;
obj.obj.Email = item.Email;
obj.obj.UserID = item.UserID;
obj.obj.FirstName = item.FirstName;
obj.obj.LastName = item.LastName;
obj.obj.PhoneNumber = item.PhoneNumber;
obj.obj.Address = item.Address;
obj.obj.City = item.City;
obj.obj.State = item.State;
obj.obj.ZipCode = item.ZipCode;
obj.obj.MobilePhone = item.MobilePhone;
obj.obj.UserType = item.UserType;
obj.obj.Status = item.Status;
//obj.providerpersonalinfo.LastName = item.LastName;
//obj.providerpersonalinfo.Email = item.Email;
//obj.providerpersonalinfo.UserID = item.UserID;
//obj.providerpersonalinfo.PhoneNumber = item.PhoneNumber;
//obj.providerpersonalinfo.Address = item.Address;
//obj.providerpersonalinfo.City = item.City;
//obj.providerpersonalinfo.State = item.State;
//obj.providerpersonalinfo.ZipCode = item.ZipCode;
//obj.providerpersonalinfo.MobilePhone = item.MobilePhone;
//obj.providerpersonalinfo.UserType = item.UserType;
//obj.providerpersonalinfo.Status = item.Status;
}
catch(Exception ex) {
throw ex;
}
解决方法
public ProviderPInfo providerpersonalinfo { get; set;}
遵守封装原则。
从技术上讲,一个类的变量或数据对任何其他类都是隐藏的,只能通过声明它们的类的任何成员函数访问。
例如你可以
public ProviderPInfo providerpersonalinfo { get; private set;}
实际上在 POCO 课程中没有区别。
providerpersonalinfo 一开始为空,可以在构造函数中赋值,也可以这样。
public ProviderPInfo providerpersonalinfo { get; set;}=new ProviderPInfo();