2017-08-06 101 views
1

我有一些在多个类中需要的常量字符串。如何以符合以下要求的标准存储和检索这些常量:我在哪里可以将共享常量放在C#应用程序中?

  1. 没有重复信息。
  2. 没有函数调用来检索常量。
  3. 之前不断没有命名空间符号(IE:ConstantNamespace.Constant)我发现到目前为止,满足每一个标准的解决方案

无:

  1. 复制他们在每个班级,他们需要(违反标准#1)。
  2. 将它们存储在一个独立的静态类中,该静态类在需要时被引用(有点像C风格的头文件,违反标准#3)。
  3. 将它们放入其中一个使用它们的类中,并在其他地方需要时引用该类(这似乎是一个坏主意,因为它可能会创建循环引用,并且违反标准#3)。
  4. 将它们放在app.config中,并在需要时检索它们(这似乎违反了风格约定,因为非配置数据存储在配置文件中,并且对配置文件的更改可能会破坏应用程序逻辑。标准#2)。

C#中是否存在符合每个标准的解决方案?

回答

3

我经常使用选项#2,因为#1充满了不同值的风险,#3打破了通常寻求的类封装。如果你必须有全局变量。他们有一个单一的真理来源。

您可以用using别名使代码有点清洁:

using static namespace.StaticClassName; 
+0

选项#2需要多余的代码的任何地方常量,则需要('StaticClass.Constant'而不只是'Constant')。有没有办法解决这个问题? – slbelden

+2

@slbelden如果你使用的是C#6(VS 2014或更新版本),那么是的。你可以在你的文件的顶部使用静态的YourNamespace.StaticClass。然后它使得'StaticClass'的所有静态成员的行为就好像它们处于该文件的范围内一样。 –

+0

欢迎来到OOP;)当然有两种使用方法。在#1中分配#2的值。我也更喜欢#2,但它主要是基于意见的...... –

0

VB.Net有Module Statement可用于可以不使用模块的名称来访问全局变量,但是C#没有按没有这样的事情。

在C#中我使用#2,但使用const。这样,当你在Visual Studio中盘旋它的价值所示:

enter image description here

+0

OP的问题是关于C#的。 – TomServo

相关问题