首页 > 解决方案 > public class object=new class() 和 public class object{get;set;} 有什么区别

问题描述

class object=new class()public和有什么区别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;
            }

标签: c#model-view-controllermode

解决方案


public ProviderPInfo providerpersonalinfo { get; set;}

尊重然后封装原则。

从技术上讲,在封装中,一个类的变量或数据对任何其他类都是隐藏的,只能通过声明它们的类的任何成员函数来访问。

例如你可以

public ProviderPInfo providerpersonalinfo { get; private set;}

实际上在 POCO 课程中没有区别。

providerpersonalinfo 一开始为空,你可以在构造函数中赋值或者像这样。

public ProviderPInfo providerpersonalinfo { get; set;}=new ProviderPInfo();

推荐阅读