Pourquoi C# n'est pas en permettant à des non-membres, comme les fonctions C++

C# ne permettra pas à écrire non des fonctions de membre et de chaque méthode doit être une partie d'une classe. Je pensais à cela comme une restriction dans toutes les CLI langues. Mais j'ai eu tort et j'ai trouvé que le C++/CLI soutient les fonctions de membre. Lorsqu'il est compilé, le compilateur va faire de la méthode en tant que membre de certains sans nom de la classe.

Ici est ce que le C++/CLI standard dit,

[Note: les fonctions de membre sont traités par la CLI en tant que membres de certains sans nom de la classe; toutefois, en C++/CLI code source, ces fonctions ne peuvent pas être qualifiés de manière explicite avec un nom de classe. la note de fin]

L'encodage des non-membres en fonctions dans les métadonnées n'est pas spécifié. [Note: Cela ne cause pas de problèmes d'interopérabilité, car ces fonctions ne peuvent avoir une visibilité publique. la note de fin]

Donc ma question est pourquoi ne pas C# mettre en place quelque chose comme ça? Ou pensez-vous qu'il ne devrait pas être non-fonctions de membre et de chaque méthode doit appartenir à une classe?

Mon avis est non-membre de la fonction de soutien et aide à éviter la pollution de la classe de l'interface.

Toutes les pensées..?

  • Belle question. Je me suis demandé la même chose. +1
  • F# prend également en charge les méthodes sans explicite de la classe (et crée ensuite un nom à partir du nom de fichier pour l'implicite de la classe).
  • Bonne question. Le C# est un têtu langue!