我应该将我的全局常量放在.NET库中的哪个位置?

Ste*_*ens 3 vb.net constants

我正在使用一个API,它以name = value格式吐出大量数据.起初我通过简单的字符串比较处理了所有内容:

Sub ProcessData(ByVal name As String, ByVal value As String)
    If name = "thisname" Then
        DoThis(value)
    ElseIf name = "thatname" Then
        DoThat(value)
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

但是有超过20种不同的可能名称需要处理,这很快就难以维护.我的下一步是将字符串移动到私有子类中定义的常量:

 Private Class Parameters
     Private Sub New()
     End Sub

     Public Const ThisName As String = "thisname"
     Public Const ThatName As String = "thatname"

 End Class
Run Code Online (Sandbox Code Playgroud)

我的方法看起来像这样:

    Sub ProcessData(ByVal name As String, ByVal value As String)
        If name = Parameters.ThisName Then
            DoThis(value)
        ElseIf name = Parameters.ThatName Then
            DoThat(value)
        End If
    End Sub
Run Code Online (Sandbox Code Playgroud)

这已经是一个巨大的飞跃,但现在我发现自己处于一个需要能够在其他类中使用这些常量的位置.我对将它们转移到全球课程犹豫不决,但我没有看到另一种选择.

全局常量在哪里?

Han*_*ant 5

常数应该是私人或朋友.失败模式是它们的值被编译到IL中.因此,如果为一个程序集创建错误修复并更改公共常量,则使用更新的程序集的其他程序集仍使用旧值.非常讨厌的失败模式.

如果需要Public常量值,则应使用ReadOnly关键字.

  • 它们更便宜,它们不占用装载机堆中的空间.这是问题所在. (3认同)