小编use*_*392的帖子

C#指针类型的默认值

我一直在搜索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*.

谢谢.

c# pointers unsafe

13
推荐指数
1
解决办法
1404
查看次数

标签 统计

c# ×1

pointers ×1

unsafe ×1