c# - 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;
}
解决方案
public ProviderPInfo providerpersonalinfo { get; set;}
尊重然后封装原则。
从技术上讲,在封装中,一个类的变量或数据对任何其他类都是隐藏的,只能通过声明它们的类的任何成员函数来访问。
例如你可以
public ProviderPInfo providerpersonalinfo { get; private set;}
实际上在 POCO 课程中没有区别。
providerpersonalinfo 一开始为空,你可以在构造函数中赋值或者像这样。
public ProviderPInfo providerpersonalinfo { get; set;}=new ProviderPInfo();
推荐阅读
- jquery - 如何获取任何 html 属性的动态部分并在 jquery 选择器中使用它?
- ruby-on-rails - 当我尝试在 MAC 终端上运行我的项目时,出现此错误
- arduino - 如何像 Arduino Uno 的按钮一样使用旋转编码器
- typescript - 我如何在groupscore上对这个数组进行排序?
- emacs - 选择算术运算,例如 2 + 2 eval 并在 minibuffer 中回显结果
- java - 即使找到路径,BFS Maze Solver 也会返回 false
- android - 如何将预定通知添加到闹钟应用程序 - Flutter
- javascript - 如何在 window.onload 事件后使用 reactjs / nextjs 加载脚本
- python - Pandas 将两个 DataFrame 中单元格中的字符串与规则进行比较
- r - assign(x)、eval(parse(text = "x"))、get(x) 和 deparse(substitute(x)) 有什么区别?