3

我有一个关于使用“默认”作为枚举值的快速问题。我正在读取现有 XML 文件的内容并将元素值解析为枚举。以下是 XML 文件中内容的示例:

<userpref_load_policy>default</userpref_load_policy>

不幸的是,我不能执行以下操作,因为“默认”是关键字!'at_start' 和 'in_background' 是该元素的其他允许值。

public enum LoadPolicy { default, at_start, in_background }

是否有一种“简单”的方法可以将默认值用作枚举值或欺骗编译器?我有一种讨厌的感觉,我需要求助于自定义扩展方法。我这样说是因为我在写回 XML 文件时调用了 .ToString() 方法(并且有很多枚举..)

提前感谢您的任何指点,伊恩

4

2 回答 2

3

是的,您可以使用它作为标识符@

public enum LoadPolicy { @default, at_start, in_background }

从 C# 5 规范,第 2.4.2 节:

本节中给出的标识符规则与 Unicode 标准附件 31 推荐的规则完全一致,除了下划线允许作为初始字符(在 C 编程语言中是传统的),标识符中允许使用 Unicode 转义序列,并且允许使用“@”字符作为前缀,以使关键字可以用作标识符。

我个人更喜欢在枚举本身中使用更惯用的名称,但在枚举值和它们的 XML 表示之间有一个映射。但是,如果您真的必须使用枚举值名称,这将起作用......

于 2013-10-18T15:06:25.487 回答
1

任何关键字都可以使用@:

public enum LoadPolicy { @default, at_start, in_background }

@ 只是一个标记;不是名字的一部分。所以以后当你使用它时可以只写:

LoadPolicy x = LoadPolicy.default;

仅当@含义不明确时才需要。

于 2013-10-18T15:07:04.467 回答