【问题标题】:Why is a const variable available within a static method?为什么在静态方法中可以使用 const 变量?
【发布时间】:2009-08-11 15:40:57
【问题描述】:

我一直在编写代码,却没有意识到为什么我可以在静态中访问常量值 方法。

为什么可以访问const 值而不将其声明为static

例如)在AddImageToDocument(...) 内调用IMAGE_FILE_EXTENSION 是合法的

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);
    }
}

【问题讨论】:

    标签: .net static language-design constants


    【解决方案1】:

    const 成员隐含为 static。它们属于类而不是特定实例。因此,您不能使用this.myConstant,而是使用MyClass.myConstant

    引用 C# 3.0 规范(第 10.4 节常量):

    即使常量被视为static 成员常量声明 既不需要也不允许static 修饰符。同一个修饰符在一个常量声明中出现多次是错误的。

    【讨论】:

    • 只是添加:尝试使用静态常量,你的编译器可能会抱怨;)
    • @Samuel :是的,是的,先生!
    • 我从没想过 const 是隐式静态的...谢谢 Mehrdad。
    【解决方案2】:

    为什么不可能呢?由于该值在编译时是固定的,因此不可能出现不一致(因为变量或readonly 字段可以在运行时为不同的实例初始化为不同的值)

    【讨论】:

      【解决方案3】:

      我希望,由于常量不能逐个更改实例,因此可以安全地从静态方法访问它们。

      【讨论】:

        猜你喜欢
        • 2013-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-01
        • 2015-11-13
        • 2019-10-06
        相关资源
        最近更新 更多