我正在尝试追踪一个非常难以捉摸的应用程序中的bug,该应用程序操作FlowDocument
。下面是三行连续的调试代码及其输出:
Debug.Assert(ReferenceEquals(document1, document2));
Debug.WriteLine(document1.Blocks.Count); // 1
Debug.WriteLine(document2.Blocks.Count); // 3
有人能帮我理解为什么两个引用同一个对象的给定属性可以具有不同的值吗?或者我对ReferenceEquals
的工作方式有什么误解吗?
谢谢,
Tim
编辑:
如果我将断言更改为if
块,则调试代码永远不会运行...
if (ReferenceEquals(document1, document2))
{
Debug.WriteLine(document1.Blocks.Count);
Debug.WriteLine(document2.Blocks.Count);
}
这让我感到非常愚蠢,因为ReferenceEquals
测试显然是有效的,但我不明白为什么断言不起作用。