Foreach系统.NullReferenceException:对象引用没有设置为对象的实例

本文关键字:设置 对象 实例 系统 NullReferenceException 对象引用 Foreach | 更新日期: 2023-09-27 18:16:16

我得到了System。

:
var offeredItems = new List<ulong>(Trade.steamMyOfferedItems);
foreach (var item in offeredItems) {
    Trade.RemoveItem(item);
}

与所有此类问题不同的是,异常位于该代码块的第3行。这是否意味着贸易为零?这很奇怪,因为我在之前的几个操作中做了这个检查:

if (Trade != null && Trade.OtherSID == OtherSID) {
    OnTradeMessage(message);
    return;
}

这样做的唯一原因是,如果在5-10个简单操作的时间内,Trade在另一个线程中被取消(这将是非常意外的行为),这将是非常奇怪的。

编辑:

问题是我不能用完全相同的步骤复制这个。我想贸易必须是空的,它必须在其他线程中无效,没有其他选择。对不起,我问了这么愚蠢的问题。

EDIT2:

如果执行了Trade.RemoveItem,则offeredItems不为空,因此Trade不能为null。在这两种情况下,offeredItems都应该包含1-2个元素。就我所知(和理解):

Trade不是nullTrade是类Trade的对象,它有方法RemoveItem(异常正好在这一行抛出:Trade.RemoveItem(item);,而不是在RemoveItemRemoveItem不是null委托(这段代码大多数情况下都有效)

Foreach系统.NullReferenceException:对象引用没有设置为对象的实例

异常在代码块的第3行

这是否意味着Trade为空?

可能是这个意思。它听起来像是下列可能性之一:

  1. Tradenull .
  2. Trade是getter抛出NullReferenceException的属性。
  3. RemoveItemnull委托。
  4. RemoveItem抛出NullReferenceException .

你为什么不在调试器中逐步检查代码并找出答案呢?此外,请参阅您的问题的评论