|
分類:[C#]
こんにちは。ぐらたんです。
任意の文字列を受け取り、
辞書に一致したものを
enumで返したいと考えています。
ここで、辞書の単語リストを
static で const で定義したいのですが
「エラー 1 定数 'TokenReader.TYPE_NAMES' を static に指定することはできません。」
とエラーが出てしまいます。
なので、今はstaticのみに指定しています。
こういった場合、
C#ではどのように書く事が推奨されているのでしょうか?
// 検出する種類
public enum TokenType
{
A,
B,
C,
UNKNOWN,
}
// 検出クラス
class TokenReader
{
// 検出する名前
private static string[] TYPE_NAMES = {
"TokenA",
"TokenB",
"TokenC",
};
// 文字列から種類を検出
public TokenType GetType( string str )
{
// 戻り値
TokenType type = TokenType.UNKNOWN;
// 単語帳
Dictionary<string,TokenType> tokenList = new Dictionary<string, TokenType>();
// 単語を登録
for ( int i = 0; i < TYPE_NAMES.Length; ++ i )
{
tokenList.Add( TYPE_NAMES[i], (TokenType)i);
}
// 単語を検索
if (!tokenList.TryGetValue(str, out type))
{
LogWriter.Write("未知の型です " + str);
}
return type;
}
}
# Dictionaryをローカルに持っている事も気になりますが
# こちらは後で何とかする予定です。
|