我一直在研究 C# 语言规范,但找不到任何关于指针类型(如 int*
)是否使用默认值进行初始化的内容。我创建了一个简单的测试应用程序,它似乎将它们初始化为零,但我想通过规范来确认这一点。
我开始寻找这个问题是因为我注意到,在反编译器中,IntPtr
类使用以下代码来定义其 IntPtr.Zero
:
public struct IntPtr : ISerializable
{
private unsafe void* m_value;
public static readonly IntPtr Zero;
.......
public static unsafe bool operator ==(IntPtr value1, IntPtr value2)
{
return (value1.m_value == value2.m_value);
}
........
}
这意味着当您与IntPtr.Zero
进行比较时,实际上是在与赋给m_value
字段的默认值(类型为void*
)进行比较。
谢谢。