Tout d'abord, il aurait pu le faire beaucoup plus facilement:
MyConfusingEnum x1 = 0;
MyConfusingEnum x2 = default(MyConfusingEnum);
MyConfusingEnum x3 = new MyConfusingEnum();
MyConfusingEnum x4 = (MyConfusingEnum) 123;
tous les ci-dessus fonctionnent tout aussi bien. (Vous pourriez être surpris de voir que les premières œuvres; voir la section spécifications sur énumération implicite des conversions pour plus de détails.)
Ma question est pourquoi le compilateur permettre une définition vide
Je vais commencer par répondre à votre question par une question. Souhaitez-vous également que le compilateur rejeter?
class C {}
interface I {}
struct S {}
Pourquoi ou pourquoi pas?
Pour plus directement pas de réponse à votre question: "pourquoi le monde est-il pas différent de ce qu'il est?" des questions difficiles à répondre. Au lieu de répondre à cette question impossible, je vais répondre à la question "supposons que faire vider les énumérations, une erreur avait été lancé à l'équipe de conception; comment auriez-vous réagi à cette hauteur?" Cette question est encore hypothétiques , mais au moins, il en est une que je peux répondre.
La question est alors de savoir si le coût de la fonction est justifié par ses prestations.
Dans l'ordre de travailler le langage doit être pensé, conçu, spécifié, mis en oeuvre, testé, documenté et expédiés aux clients. C'est un "produire une erreur", de sorte que le message d'erreur doit être écrit et traduit dans une douzaine de langues, ainsi que la documentation. Les cinq minutes, il m'aurait pris pour mettre en œuvre la fonctionnalité de traduire en nombre d'heures de travail par beaucoup de gens qui sont payés plutôt beaucoup.
Cependant, qui n'est effectivement pas le coût. Le coût d'opportunité est le coût. Les Budgets sont finis, les fonctionnalités ne sont pas libres, et par conséquent, toute fonction qui est mise en place de certains autres fonctionnalité doit être coupé; la fonctionnalité de C# aimeriez-vous avoir été coupé pour obtenir cette fonctionnalité? Le perdu l' avantage de ne pas être capable de faire une meilleure fonctionnalité est le coût d'opportunité.
Je note aussi que votre proposition de fonctionnalité a zéro avantage évident pour la personne, ce qui serait difficile à vendre pour le comité de conception. Peut-être il ya une convaincante des avantages que je ne vois pas; si oui, quel est-il?
existe-il des scénarios où il pourrait être utile?
Aucun viennent à l'esprit. "Rejetant les programmes qui ne sont pas évidemment utile" n'est pas un objectif de conception de C#.