我在 C# 类中定义了一堆public const int
变量,它们的值也被初始化。如果每个变量的值不唯一,有没有办法让编译器抛出编译器错误?如果变量之间存在值冲突,我不希望我的项目编译。
问问题
104 次
3 回答
2
您必须创建一个自定义的Fx Cop 规则,该规则将查看public const int
您班级中的成员并检查分配给他们的值。然后,您可以将此规则添加到您的代码分析规则集中,并将其设置为失败时出错(而不是警告)。
于 2012-10-23T22:12:47.527 回答
2
switch 语句中的 case 必须是唯一的,因此您可以switch
对要确保不会与其他变量重叠的每个变量使用带有 case 的语句。
static class ColorSwatches
{
public const int Red = 0, Gray = 1, Blue = 2, Yellow = 3, Grey = 1;
static ColorSwatches()
{
switch (0) {
case Red: break;
case Gray: break;
case Blue: break;
case Yellow: break;
case Grey: break;
}
}
}
不幸的是,这确实需要在switch
.
(边栏:这也适用于 C++,在添加之前我已将其用于编译时断言static_assert
。)
于 2012-10-23T22:15:29.143 回答
0
在枚举中定义它们。如果您不希望它们从零单调增加,您仍然可以指定值,但如果有任何重复值,编译器会出错。
于 2012-10-23T23:20:50.050 回答