关于C#:具有常量的类

Class with constants

本问题已经有最佳答案,请猛点这里访问。

我是目标C的新手,所以这个问题可能很愚蠢。我需要一个只有常量的类。假设我有许多这样定义的常量:

1
uint8_t const ONE = 1

在我的应用程序中,A有20个常量,我想从许多地方(类)访问它的值。在C中,我将使用带有常量的类来实现这一点,并静态地访问它们:

1
Constants.ONE;

但在目标C中,这对我来说是个问题。我知道我可以将常量放到一些头文件中,然后将其导入到类中,但存在复制的风险。

例如,A有一个A、B、C类。在A、I类中,导入B和C类。每个类都需要访问常量,但我不能将头文件导入每个常量(如果B类有常量,而A类也有常量,则常量是重复的)。


Objective-C是C的超集,这意味着您可以在代码中使用任何C特性。现在IIRC C不直接支持structs中的常量,但是您可以定义一个常量struct,并通过c99指定的初始值设定项列表直接初始化它(只是为了保持可读性),比如:

1
2
3
4
5
6
7
8
9
10
11
12
struct constants
{
  const int INT_VALUE;
  const char* STRING_VALUE;
} const Constants = {
  .INT_VALUE = 10,
  .STRING_VALUE ="Foobar"
};

...
Constants.INT_VALUE
...