【问题标题】:Is it possible to declare a dynamic constant in VB .NET?是否可以在 VB .NET 中声明动态常量?
【发布时间】:2010-01-27 21:52:01
【问题描述】:

我试图在程序执行开始时将时间戳保存到一个常量中,以便在整个程序中使用。例如:

Const TIME_STAMP = Format(Now(), "hhmm")

但是,此代码会生成编译器错误 - “需要常量表达式”。这是否意味着 VB .NET 中的所有常量都必须包含平面、静态、硬编码的数据?我知道可以在其他语言(例如 Java)中使用动态值初始化常量 - 使其成为常量的原因是在初始分配之后您不能再更改它。 VB .NET 中是否有等价物?

【问题讨论】:

    标签: vb.net dynamic constants


    【解决方案1】:

    您需要将其设为 Shared Readonly 而不是 Const - 后者仅适用于 compile-time 常量。 Shared Readonly 仍然会阻止任何人更改值。

    Java 实际上没有Const 这样的概念——它只是发现static final 的值实际上是编译时常量。

    【讨论】:

      【解决方案2】:

      您正在寻找的是 readonly 关键字。 时间戳必须在运行时计算,不能保持不变。

      ReadOnly TIME_STAMP As String = Format(Now(), "hhmm")
      

      【讨论】:

        【解决方案3】:

        根据定义,常量不是动态的。如果你想让一个变量设置一次,而不是再次修改,我相信你正在寻找ReadOnly关键字...

        Public Shared ReadOnly TIME_STAMP = Format(Now(), "hhmm")
        

        请注意,“共享”是可选的。

        【讨论】:

        • 为什么Shared 之间有括号?
        • 因为它是(可选的)取决于库的设计方式。
        • 机会是,不仅对我而言。这个概率真的很低。但是为什么要说服你呢?
        猜你喜欢
        • 2012-06-10
        • 2020-03-10
        • 1970-01-01
        • 2011-04-17
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多