use*_*392 13 c# pointers unsafe
我一直在搜索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);
}
........
}
Run Code Online (Sandbox Code Playgroud)
这意味着当你与IntPtr.Zero它进行比较时,实际上是与分配给m_value具有类型的字段的默认值进行比较void*.
谢谢.
小智 -1
使用 Visual Studio 调试器,您可以获得分配给 int 指针的默认值。在 32 位架构中,它是 0x00000000(32 0 位)。
class Program
{
private static unsafe int* m_value;
static void Main(string[] args)
{
} // <<== Break point here
}
Watch Window
_____________________________________________
Name Value Type
======= ========== ========
m_value 0x00000000 int*
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |