これはおそらくばかげた質問ですが、私にはできないようです。次のように、1つのクラスにいくつかの列挙型を設定します。
public enum Direction { north, east, south, west };
次に、その列挙型をすべてのクラスからアクセスできるようにして、他のクラスがたとえば以下を行えるようにします。
Direction dir = north;
クラス間で列挙型を渡すことができます:
public void changeDirection(Direction direction) {
dir = direction;
}
列挙型をパブリックに設定すると、これが自動的に可能になると考えましたが、列挙型を宣言したクラスの外では表示されないようです。
次の2つのいずれかを実行できます。
1-= enumの宣言をクラス外に移動します
今日はおそらくこのようなものを持っています
public class ClassName
{
public enum Direction
{
north, south, east, west
}
// ... Other class members etc.
}
に変更されます
public class ClassName
{
// ... Other class members etc.
}
// Enum declared outside of the class
public enum Direction
{
north, south, east, west
}
2-クラス名を使用して列挙型を参照する
ClassName.Direction.north
例えば。
public void changeDirection(ClassName.Direction direction) {
dir = direction;
}
ClassName
は、enumを宣言したクラスの名前です。
クラスのような名前空間のスコープでenumを宣言しますが、クラスには宣言しません:
namespace MyApplication
{
public enum Direction { north, east, south, west };
}
Enumがクラスのスコープで宣言されている場合、このクラスもパブリックにします:
namespace MyApplication
{
public class MyClass
{
public enum Direction { north, east, south, west };
}
}
使用法:
MyClass.Direction dir = ...
パブリックですが、クラス内で列挙型を定義すると、そのクラスの内部型になります。例えば:
namespace MyNamespace
{
public class Foo
{
public enum MyEnum { One, Two, Three }
}
}
MyNamespace
名前空間の別のクラスからこの列挙型にアクセスするには、MyEnum
だけでなく、Foo.MyEnum
として参照する必要があります。単にMyEnum
として参照する場合は、クラス内ではなく、名前空間内で宣言します。
namespace MyNamespace
{
public class Foo { ... }
public enum MyEnum { One, Two, Three }
}
enum
定義をProgram.cs
ファイルの内部に配置しますが、Program
クラスの外部に配置します。これにより、クラス名を参照せずにenum
型にグローバルにアクセスできるようになります。
namespace YourApp
{
enum Direction { north, east, south, west };
static class Program
{
}
}
次に、次のようにクラス名を指定することなく、同じ名前空間内のanywhere in anyクラスにアクセスできます。
Direction d;
d = Direction.north;