【问题标题】:what is difference between public class object=new class() and public class object{get;set;} [duplicate]public class object=new class() 和 public class object{get;set;} 有什么区别 [重复]
【发布时间】:2021-09-23 09:59:53
【问题描述】:

公开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;
            }

【问题讨论】:

标签: c# model-view-controller mode


【解决方案1】:
public ProviderPInfo providerpersonalinfo { get; set;}

尊重然后封装原则。

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

例如你可以

public ProviderPInfo providerpersonalinfo { get; private set;}

实际上在 POCO 类中没有区别。

providerpersonalinfo开头为null,可以在构造函数中赋值,也可以这样。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多