【发布时间】:2019-06-07 12:31:31
【问题描述】:
我想生成编译时枚举值。
就像我们在 c 中所做的那样
#define macfun(x) (128 | ((unsigned int)(x) << 16L)
现在如果想生成另一个 const vale,我只需这样做
#define JISCHAR macfun(3)
我正在制作第三方库的 C# 包装器,它定义了许多不同类型的常量。
我真的可以在 C# 编译时生成枚举吗?
计算常量和分配给变量的其他方法是什么?
【问题讨论】:
-
AFAIK 在 C# 中没有可以像 C 中那样工作的宏。但是如果您已经在 C# 中创建枚举,您不能只从包装的 C 代码中分配值吗?
-
一个选项有50多个值。和 8 个不同的选项。这就是为什么我一直在寻找更好的方法来做到这一点
-
你可以使用 const/readonly 字段并使用私有函数来初始化它们(可能使它们全部静态)
-
是的,我可以说选项一的静态常量类和一个静态方法来分配只读属性,它是一个常量值。我理解正确了吗?
-
这就是我所想的——这确实意味着你不能像那样为枚举赋值。