我收到此错误,我不确定这是什么意思?
你调用的对象是空的.
这导致AccessViolationException抛出:
using System;
namespace TestApplication
{
internal static class Program
{
private static unsafe void Main()
{
ulong* addr = (ulong*)Int64.MaxValue;
ulong val = *addr;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致NullReferenceException抛出:
using System;
namespace TestApplication
{
internal static class Program
{
private static unsafe void Main()
{
ulong* addr = (ulong*)0x000000000000FF;
ulong val = *addr;
}
}
}
Run Code Online (Sandbox Code Playgroud)
它们都是无效指针,都违反了内存访问规则.为什么NullReferenceException?
" 对象引用未设置为对象的实例 "
为什么异常不会显示对象引用字段的名称,或者至少显示其类型?
这可能是.NET中最常见的运行时错误之一.尽管System.Exception具有堆栈跟踪,但没有其他有用的详细信息.
在一年的过程中,我花了几个小时筛选堆栈跟踪(通常在我没写的代码中),希望有一个来自".pdb"文件的行号,然后在代码中查找行,即使这样,它也是通常不明显该线上的哪个引用为null.拥有参考字段的名称将非常方便.
如果System.ArgumentNullException实例可以显示方法参数的名称(" Value不能为null.参数名称:value "),那么System.NullReferenceException实例肯定可以包含null字段的名称(或其包含的集合).