Als jemand mit einem Hintergrund in C, C++ und Assembler hat mich an C# immer gestört, dass ich so etwas nicht tun kann:
struct OperatorType
{
string Operator;
TokenType Type;
}
protected static OperatorType[] Operators = {
{ "{", TokenType.OpenBrace }
};
Ich möchte dies zu deklarieren, so dass es nicht Zuweisung und Initialisierung zur Laufzeit erfordert, aber C# wird es nicht zulassen.
Ja, ich verstehe, dass ich die Initialisierung mit new OperatoryType() { Operator = "{", Type = TokenType.OpenBrace }
. Aber erfordert das nicht eine Zuweisung und Initialisierung von Speicher zur Laufzeit? Ich weiß, es ist nicht so viel Overhead, aber ich verstehe nicht, warum es hier notwendig ist.
Kann jemand erklären, warum dieses Bit der zusätzlichen Overhead von C# erforderlich ist, oder möglicherweise eine Möglichkeit, dies ohne die Laufzeitzuweisung zu tun?