【发布时间】:2014-03-23 03:07:36
【问题描述】:
我有一段代码会抛出 NullReferenceException:
dataSource.DataSource = GetView();
它抛出是因为dataSource 是null。 GetView 返回 DataTable。
但是,当在一台计算机(64 位)上运行时,程序继续运行,没有任何问题。例外确实发生了,因为当我迈出一步时,我最终完全到了其他地方。调试器并没有停止。
当在另一个(32 位)上运行时,它会抛出异常并且我的调试器停止。
我的程序是为 32 位编译的。当我切换到“任何 CPU”时,64 位计算机确实会因异常而崩溃。
更新我知道如何解决我的问题(事实上我已经知道了)。我只想知道这是某种已知的行为还是可能由多种原因引起的。
修复方法是 1) 选择“任何 CPU”(这会导致 64 位机器崩溃)和 2) 在运行此部分之前检查 dataSource 是否为空。
【问题讨论】:
-
为什么不附上一小段你有问题的代码?
-
@Eiver 我添加了代码。但问题不在于代码。我知道它为什么会抛出异常。它应该扔掉它。
-
@BartFriederichs 我认为这里的重点是它可能不会直接甚至微弱地影响比特数。有很多因素在起作用,根据我的经验,很容易让自己相信某件事,因为它是你能看到的唯一区别,而事实并非如此。
-
你的问题基本上是“当我运行一个你没有的程序时,我的机器上发生了一些奇怪的事情”。好的,这是一个有趣的故事,但不是一个承认这里的任何人给你解释的故事。如果您想了解它,请创建重现行为的最小可能程序并发布。然后我们实际上可以在不同的机器上尝试看看会发生什么。
-
@BartFriederichs - 很简单。您的代码更有可能出现错误,然后编译器出现代码优化错误。有问题的控件并不新,它已被数十万个应用程序使用,单行已被数十万个应用程序使用。