覆盖null对象

时间:2013-10-23 11:38:41

标签: c# asp.net-mvc

var newThing = db.Things.SingleOrDefault(t => t.ThingName == viewModel.ThingName);

if (newThing == null)
{
    newThing.ThingName.Equals(viewModel.ThingName);
}

如果上述if语句为真,我收到

Object reference not set to an instance of an object

异常,因为newThing为null。是否可以初始化NewThing并将newThing.ThingName设置为viewModel.ThingName?

4 个答案:

答案 0 :(得分:2)

您可以初始化它并设置其值

if (newThing == null)
{
    newThing = new Thing(); 
    newThing.ThingName = viewModel.ThingName;
}

答案 1 :(得分:2)

除了@Satpals解决方案,这里还有一个单行程序来从DataBase获取项目或初始化一个新项目:

var newThing = db.Things.SingleOrDefault
    (t => t.ThingName == viewModel.ThingName) ??
    new Thing { ThingName = viewModel.ThingName };

答案 2 :(得分:0)

是的,您可以,但您需要先创建Thing的新实例。

段:

if (newThing == null)
{
    newThing = new Thing();
    newThing.ThingName = viewModel.ThingName; //Set the ThingName to what is wanted.
}

希望这有帮助。

答案 3 :(得分:0)

我觉得你很困惑。

something.Equals(somethingElse);

返回true or false somethingsomethingElse是否相等。

something = somethingElse;

something设置为somethingElse这就是你想要做的。

此外:

something == somethingElse

返回true or false somethingsomethingElse是否相等。