如何检查项目是否未初始化?
How to check if the item is not initialized?
我找不到任何地方可以解决这个问题。
我写了一个单元测试来测试这个方法
public double CalculateTotalWeight()
{
double result = 0;
if (Store?.TypeOfRacquet.Any())
{
result = Store.TypeOfRacquet.Sum(m => m.Weight);
}
return result;
}
单元测试失败,因为 nullexceptionreference
对象未在权重 属性 上初始化。
如何检查是否有权重 属性,或者权重 属性 是否已初始化?
我试过很多方法
if (Store?.TypeOfRacquet.Any())
if (Store?.TypeOfRacquet.Where(m => m.Weight != null)
if (Store?.TypeOfRacquet.First().Weight != null)
编辑
这是我在 TypeOfRacquet
中的体重 属性
public int Weight
{
get { return Get<int>(); }
set { Set(value); }
}
我的单元测试
[TestMethod]
public void CalculateTotalt_Without_Weight_Test()
{
var entity = new Store
{
TypeOfRacquet = new TypeOfRacquet
{
Id = Guid.NewGuid()
}
};
var result = entity.CalculateTotalWeight();
Assert.AreEqual(0, result);
}
调试时,我得到 System.NullReferenceException:对象引用未设置为对象实例
问题很可能是您的 TypeOfRacquet
为空。在尝试调用 Any
方法之前,您也应该在 if
条件下检查它:
double result = 0;
if (Store?.TypeOfRacquet != null && Store.TypeOfRacquet.Any())
{
result = Store.TypeOfRacquet.Sum(m => m.Weight);
}
return result;
或者,更简单地说:
return Store?.TypeOfRacquet?.Sum(m => m.Weight) ?? 0;
感谢大家的帮助,这就是我所做的,对我有用
if (Store != null)
{
foreach (var racquet in Store.TypeOfRacquet)
{
result += racquet.Weight;
}
}
我找不到任何地方可以解决这个问题。 我写了一个单元测试来测试这个方法
public double CalculateTotalWeight()
{
double result = 0;
if (Store?.TypeOfRacquet.Any())
{
result = Store.TypeOfRacquet.Sum(m => m.Weight);
}
return result;
}
单元测试失败,因为 nullexceptionreference
对象未在权重 属性 上初始化。
如何检查是否有权重 属性,或者权重 属性 是否已初始化?
我试过很多方法
if (Store?.TypeOfRacquet.Any())
if (Store?.TypeOfRacquet.Where(m => m.Weight != null)
if (Store?.TypeOfRacquet.First().Weight != null)
编辑
这是我在 TypeOfRacquet
中的体重 属性public int Weight
{
get { return Get<int>(); }
set { Set(value); }
}
我的单元测试
[TestMethod]
public void CalculateTotalt_Without_Weight_Test()
{
var entity = new Store
{
TypeOfRacquet = new TypeOfRacquet
{
Id = Guid.NewGuid()
}
};
var result = entity.CalculateTotalWeight();
Assert.AreEqual(0, result);
}
调试时,我得到 System.NullReferenceException:对象引用未设置为对象实例
问题很可能是您的 TypeOfRacquet
为空。在尝试调用 Any
方法之前,您也应该在 if
条件下检查它:
double result = 0;
if (Store?.TypeOfRacquet != null && Store.TypeOfRacquet.Any())
{
result = Store.TypeOfRacquet.Sum(m => m.Weight);
}
return result;
或者,更简单地说:
return Store?.TypeOfRacquet?.Sum(m => m.Weight) ?? 0;
感谢大家的帮助,这就是我所做的,对我有用
if (Store != null)
{
foreach (var racquet in Store.TypeOfRacquet)
{
result += racquet.Weight;
}
}