私は単純なローグライク ゲームを作成して、C# をもう少しよく学ぼうとしています。Enum を引数として指定できる一般的なメソッドを作成しようとしています。その Enum にある要素の数を int として返します。メソッドを呼び出すいくつかの異なるクラスがあるため、できるだけ一般的なものにする必要があります。
私は過去1時間ほど検索しましたが、ここまたは他の方法で私の質問に完全に答えたリソースを見つけることができませんでした...私はまだC#の初心者から中級者の段階にあるので、まだすべてを学んでいます物事の構文ですが、これまでのところ私が持っているものは次のとおりです。
// Type of element
public enum ELEMENT
{
FIRE, WATER, AIR, EARTH
}
// Counts how many different members exist in the enum type
public int countElements(Enum e)
{
return Enum.GetNames(e.GetType()).Length;
}
// Call above function
public void foo()
{
int num = countElements(ELEMENT);
}
「引数 1: 'System.Type' から 'System.Enum' に変換できません」というエラーでコンパイルされます。うまくいかない理由はなんとなくわかりますが、すべてを正しく設定するための指示が必要です。
ありがとう!
PS: 実行時に列挙型の内容を変更することは可能ですか? プログラムの実行中?