【发布时间】:2011-04-09 08:45:42
【问题描述】:
我主要有 C++ 背景,我正在学习 C#。所以,我需要一些 C# 习语和风格方面的帮助。
我正在尝试用 C# 编写一个小型文本文件解析方法,其中我需要一个具有三种状态的简单状态变量。在 C++ 中,我会为状态变量声明一个像这样的enum:
enum { stHeader, stBody, stFooter} state = stBody;
...然后像这样在我的解析循环中使用它:
if (state == stHeader && input == ".endheader")
{
state = stBody;
}
在 C# 中,我意识到不可能在方法内声明 enum。那么,为了干净的风格,我应该怎么做?在方法之外声明这个内部enum?使用幻数 1,2,3?为此创建一个单独的类?
请帮我解惑。
【问题讨论】:
-
也许我遗漏了一些东西,但如果枚举仅用于单一方法,那么它的意义何在?
-
@Dogget - 为状态提供可读的名称。否则我将不得不写 if (state == 2 && input == ".endheader") state = 1;
-
状态的自注释等。在 C 语言中很常见,即在给出的示例中 - 将状态作为比 int 更有意义的东西。我不得不说,它在 C# 中出现的频率较低 - 主要是因为您倾向于将方法分解为更小的组件、对象等,而不是更面向命令的 C。或者 C++,当它与 C 类似时使用。
标签: c# enums coding-style