如何在C#中创建公共const大小?

Bru*_*oLM 3 .net c# const readonly

我正在尝试编写以下代码:

public const Size ImageSize = new Size() { Width = 28, Height = 28 };
Run Code Online (Sandbox Code Playgroud)

但我得到的错误Width,并Height是只读的.

建议的方法是什么?

Cod*_*ray 10

根本问题是你不能将类型的对象声明System.Drawing.Sizeconst.这表明该符号将在编译时被替换为常量的值.

相反,你应该使用readonly.这也是一个"常量"值,因为它在构造函数运行后无法修改,但是对象是在运行时而不是编译时创建的.

以下代码编译得很好:

public static readonly Size ImageSize = new Size() { Width = 28, Height = 28 };
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 8

const仅限于编译器可以直接写为IL的原语.如果被视为不可变,即readonly在这里应该足够了 Size

public static readonly Size ImageSize = new Size(28,28);
Run Code Online (Sandbox Code Playgroud)

请注意,如果Size是可变的struct,可能会发生不好的事情; 我会推荐一个属性而不是一个字段来防止一些令人困惑的副作用.