首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VB.NET中常量的容器

VB.NET中常量的容器
EN

Stack Overflow用户
提问于 2010-06-29 18:27:15
回答 4查看 7K关注 0票数 2

假设我有一些相互依赖的常量,我决定将它们放在一个容器中,而不是将其作为类中的单个常量。

我本想为该作用域使用Structure,但编译器强制我为该结构声明一个私有成员。

代码语言:javascript
运行
复制
  ' Compile error: at least one private member is needed.
  Private Structure BandSizes 
    Const BandHeight As Short = HourHeight + 20
    Const HourHeight As Short = HalfHourHeight + 20
    Const HalfHourHeight As Short = LineHeight + PictureHeight + 20
    Const PictureHeight As Short = 20
    Const LineHeight As Short = StopHeight + 10
    Const LineWidth As Short = 50
    Const StopHeight As Short = 30
  End Structure

由于我只有几个整数常量,我应该创建一个共享(静态)类吗?

平台: VB.NET (.NET 2)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-29 19:33:33

在我看来,实现此目的的最佳选择是创建一个仅包含共享、静态成员和常量的(私有)类。您不需要创建对象,并且可以随心所欲地控制可访问性。

代码语言:javascript
运行
复制
   Private NotInheritable Class BandSizes
        Public Const BandHeight As Short = HourHeight + 20
        Public Const HourHeight As Short = HalfHourHeight + 20
        Public Const HalfHourHeight As Short = LineHeight + PictureHeight + 20
        Public Const PictureHeight As Short = 20
        Public Const LineHeight As Short = StopHeight + 10
        Public Const LineWidth As Short = 50
        Public Const StopHeight As Short = 30

        Private Sub New()
        End Sub
    End Class

注意:在类的声明中需要NotInheritable,因为当您使用模块时,编译器会生成CIL。我更喜欢“标准.NET”的-way,而不是仅限Visual Basic的东西。此外,您可以更多地控制它的可访问性,并且可以将其设置为内部类。这实际上是C# static classVB.NET对应物。

票数 9
EN

Stack Overflow用户

发布于 2010-06-29 18:40:06

由于它是VB.NET,如果它们是真正的全局常量,并且它们的名称本身就足够了,那么您还可以创建一个模块来保存它们。

此外,请注意,如果从外部程序集访问这些常量,则这些常量的值可能会发生更改。因此,如果它们是公共的,并放在一个类库中,例如,将它们作为ReadOnly而不是常量可能会更好。

票数 6
EN

Stack Overflow用户

发布于 2011-09-07 15:08:49

我建议你先看看这篇文章,然后决定应该使用"const“还是应该使用"readonly”,而不是使用"const“。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3139787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档