JYe*_*ton 16 c# colors compile-time-constant
我在C#winforms应用程序中设置了一些默认颜色,如下所示:
readonly Color ERROR = Color.Red;
readonly Color WARNING = Color.Orange;
readonly Color OK = Color.Green;
Run Code Online (Sandbox Code Playgroud)
据我所知,readonly对我来说基本上是一个常数.如果我尝试将它们定义为常量,编译器会指示它必须是编译时常量,而Color不是.
我很好地保留这些原样,还是有一些方法来定义我应该注意的这些常量?
(目的只是为了有一个位置来更改所有颜色以进行日志记录.)
cod*_*nix 22
只能将文字定义为const
.不同之处在于,const
值被硬化为使用它的程序集.如果他们的定义发生变化,那么除非重新编译,否则呼叫站点不会注意到.
相反,readonly
声明一个变量的方式是它不能在构造函数之外重新赋值(或者在static readonly
变量的情况下是静态构造函数).
所以,你没有别的办法在这里使用readonly,因为Color是一个结构,没有原始数据类型或文字.
一个const
字段是一个compile time
常数-你真正需要的代码运行到确定的值Color.Orange
,虽然,国内大概定义为
public static readonly Color Orange = new Color(...);
Run Code Online (Sandbox Code Playgroud)
由于这不能在编译时计算,您唯一的选择是readonly
在运行时设置。
另请查看这篇文章。
归档时间: |
|
查看次数: |
12921 次 |
最近记录: |