我得到了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
不是null
,Trade
是类Trade
的对象,它有方法RemoveItem
(异常正好在这一行抛出:Trade.RemoveItem(item);
,而不是在RemoveItem
,RemoveItem
不是null
委托(这段代码大多数情况下都有效)
异常在代码块的第3行
这是否意味着Trade为空?
可能是这个意思。它听起来像是下列可能性之一:
-
Trade
是null
. -
Trade
是getter抛出NullReferenceException
的属性。 -
RemoveItem
为null
委托。 -
RemoveItem
抛出NullReferenceException
.
你为什么不在调试器中逐步检查代码并找出答案呢?此外,请参阅您的问题的评论