如何检查项目是否未初始化?

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