我得到 System.NullReferenceException: Object reference not set to an instance of an object in this:
var offeredItems = new List<ulong>(Trade.steamMyOfferedItems);
foreach (var item in offeredItems) {
Trade.RemoveItem(item);
}
与所有此类问题不同的是,该代码块的第 3 行中出现了异常。这是否意味着 Trade 为空?这会很奇怪,因为我之前做了一些检查:
if (Trade != null && Trade.OtherSID == OtherSID) {
OnTradeMessage(message);
return;
}
唯一的原因是如果 Trade 在 5-10 次简单操作中在另一个线程中被清空(这将是非常出乎意料的行为),这真的很奇怪。
编辑:
问题是我无法通过完全相同的步骤重现这一点。我猜 Trade 必须为空,并且必须在其他线程中为空,没有其他选择。对不起愚蠢的问题。
编辑2:
如果Trade.RemoveItem
执行,则不offeredItems
为空,因此Trade
不能为null
。在这两种情况下offeredItems
都应该包含 1-2 个元素。据我所知(并理解):
Trade
is not null
,
Trade
是 class 的对象Trade
,它有方法RemoveItem
(异常恰好在这一行抛出:Trade.RemoveItem(item);
, not in RemoveItem
,
RemoveItem
is not null
delegate (这段代码大部分时间都有效)