作为一个具有C、C++和汇编语言背景的人,C#让我感到困扰的一件事是我不能像这样做:
struct OperatorType
{
string Operator;
TokenType Type;
}
protected static OperatorType[] Operators = {
{ "{", TokenType.OpenBrace }
};
我希望在不需要在运行时进行分配和初始化的情况下声明此内容,但 C# 不允许这样做。
是的,我知道可以使用
new OperatoryType() { Operator = "{", Type = TokenType.OpenBrace }
进行初始化。但这不是涉及运行时分配和初始化内存吗?我知道这并不是很繁琐,但我不明白为什么这里需要这样做。有人能解释一下为什么 C# 需要这额外的开销,或者可能有一种方法可以在不运行时分配的情况下完成吗?
new
使用让我认为每个静态变量都会调用一个分配例程。这怎么可能比完全没有开销更快呢? - Jonathan Wood