我一直在编写代码而没有意识到为什么我可以在static中访问常量值
方法。
为什么可以访问const
值而不将其声明为static
?
例如,在IMAGE_FILE_EXTENSION
AddImageToDocument(...)
是合法的
public abstract class ImageDocumentReplacer : DocumentReplacer
{
private const string IMAGE_FILE_EXTENSION = ".tif";
private static void AddImageToDocument(int documentId, string separatedPath)
{
Console.WriteLine(IMAGE_FILE_EXTENSION);
}
}
答案 0 :(得分:18)
const
成员隐含static
。它们属于类而不是特定的实例。因此,您无法使用this.myConstant
但MyClass.myConstant
。
引用C#3.0规范(第10.4节常量):
即使常量被视为
static
成员,常量声明 既不需要也不允许static
修改。同一修饰符在常量声明中多次出现是错误的。
答案 1 :(得分:2)
为什么不可能?由于该值在编译时是固定的,因此不存在可能的不一致性(因为在运行时可以将变量或readonly
字段初始化为不同实例的不同值)
答案 2 :(得分:1)
我希望这样,因为常量不能改变实例到实例,这使得从静态方法访问它们是安全的。