This question already has answers here:
What is a NullReferenceException, and how do I fix it?
(29个答案)
3年前关闭。
我有一个生产代码抛出异常
System.NullReferenceException:对象引用未设置为实例
一个对象。在
name.Extensions.Ads.Payload.ThisExtensions.ToMyLog(MyModel myModel,
MyOwnModel myOwnModel)
D:\ name \ Extensions \ Ads \ Payload \ ThisExtensions.cs:第197行
在本地代码中,我强制执行此操作的唯一方法是在此处放置断点,然后手动将myObj更改为null。
但是根据代码流,这应该已经初始化了。
我不完全确定正在发生什么以及如何发生。有没有办法解释这一点,或者加强代码来防止这一点?
MyModel类
相当于
或将其拆分为3个检查并使用具体信息引发异常,什么对象为null
另外,如果它的内部执行某些工作,则其属性的getter可能会产生此异常。
(29个答案)
3年前关闭。
我有一个生产代码抛出异常
myObj.itsProperty= 1;
System.NullReferenceException:对象引用未设置为实例
一个对象。在
name.Extensions.Ads.Payload.ThisExtensions.ToMyLog(MyModel myModel,
MyOwnModel myOwnModel)
D:\ name \ Extensions \ Ads \ Payload \ ThisExtensions.cs:第197行
在本地代码中,我强制执行此操作的唯一方法是在此处放置断点,然后手动将myObj更改为null。
但是根据代码流,这应该已经初始化了。
我不完全确定正在发生什么以及如何发生。有没有办法解释这一点,或者加强代码来防止这一点?
public static MyModel ToMyLog(this MyModel myModel, MyOwnModel myOwnModel)
{
DateTime currentTime = DateTime.Now;
MyModel myObj =
new MyModel
{
SomeID = 1
InsertedDate = currentTime,
UpdatedDate = currentTime
};
if (myModel.somePropertiesModel.someProperty.Count >= 1)
{
myObj.itsProperty = 1; //itsProperty is a byte type
}
MyModel类
public class MyModel
{
///<summary>
/// itsProperty
///</summary>
public byte itsProperty{ get; set; }
最佳答案
myModel最有可能为null,但myObj不是。在方法的开头添加
if(myModel?.somePropertiesModel?.someProperty==null)
throw new ArgumentNullException("myModel");
相当于
if(myModel==null || myModel.somePropertiesModel==null || myModel.somePropertiesModel.someProperty==null)
throw new ArgumentNullException("myModel");
或将其拆分为3个检查并使用具体信息引发异常,什么对象为null
if (myModel == null)
throw new ArgumentNullException("myModel");
if (myModel.somePropertiesModel == null)
throw new ArgumentNullException("myModel.somePropertiesModel");
if (myModel.somePropertiesModel.someProperty == null)
throw new ArgumentNullException("myModel.somePropertiesModel.someProperty");
另外,如果它的内部执行某些工作,则其属性的getter可能会产生此异常。
关于c# - 对象已初始化,但仍为null ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39784401/
10-13 01:59