Отвечая на другой вопрос, Джон Скит упомянул о том, что в определении enums
есть странная вещь. Его ответ.
Он утверждает, что переопределение базового типа enum
возможно только с помощью псевдонимов типов, а не с типами фреймов (int
допустимо, Int32
нет и т.д.)
public enum Foo : UInt32 {} // Invalid
public enum Bar : uint {} // Valid
Теперь я попытался воспроизвести это (с С# 6/Roslyn в VS2015), и я не пришел к такому же выводу:
public enum TestEnum : UInt32
{
}
и
public enum MyEnum : uint
{
}
оба полностью действительны. Почему это так? Или изменилось?
EDIT:
Итак, чтобы прояснить ситуацию, это было изменение в С# 6, которое еще не задокументировано, и оно будет задокументировано в ближайшее время, так как вы можете прочитать эту проблему git на Roslyn Github