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.Size为const.这表明该符号将在编译时被替换为常量的值.
相反,你应该使用readonly.这也是一个"常量"值,因为它在构造函数运行后无法修改,但是对象是在运行时而不是编译时创建的.
以下代码编译得很好:
public static readonly Size ImageSize = new Size() { Width = 28, Height = 28 };
Run Code Online (Sandbox Code Playgroud)
const仅限于编译器可以直接写为IL的原语.如果被视为不可变,即readonly在这里应该足够了 Size
public static readonly Size ImageSize = new Size(28,28);
Run Code Online (Sandbox Code Playgroud)
请注意,如果Size是可变的struct,可能会发生不好的事情; 我会推荐一个属性而不是一个字段来防止一些令人困惑的副作用.
| 归档时间: |
|
| 查看次数: |
2511 次 |
| 最近记录: |