Я искал спецификацию языка С#, и я не могу найти ничего, что говорит о том, что тип указателя (например, 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*
.
Спасибо.