Вызывает ли адрес структуры C # вызов конструктора по умолчанию?
Например, я получил такие структуры:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct HEADER {
public byte OPCODE;
public byte LENGTH;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct S {
public HEADER Header;
public int Value;
}
Тогда, конечно, я не могу сделать это:
S s; // no constructor call, so...
var v = s.Value; // compiler error: use of possibly unassigned field 'Value'
Но как только я получаю указатель на структуру, я могу читать ее поля, даже не используя указатель, и даже поля встроенной структуры:
S s;
S* ps = &s;
var v1 = ps->Value; // OK, expected
var v2 = s.Value; // OK!
var len = s.Header.LENGTH; // OK!
Итак, вызывает ли онакаким-то образом конструктор по умолчанию или - как только я возьму адрес - C # перестанет заботиться о памяти?
PS: память все равно инициализируется нулями.