Je suis un programmeur Python qui apprend le C # et qui essaie d'arrêter de s'inquiéter. J'adore le C # pour ce qu'il est, plutôt que de le comparer constamment à Python.
Je suis rattrapé par un point: le manque de précision sur la définition des choses, comme détaillé dans cette question de débordement de pile . En bref: en C #, using foo
ne vous dit pas quels noms foo
sont disponibles, ce qui est analogue à from foo import *
Python - une forme déconseillée dans la culture de codage Python pour être implicite plutôt que l'approche plus explicite de from foo import bar
.
Les réponses des programmeurs C # à ce sujet m'ont beaucoup frappé, c'est qu'en pratique, ce manque de clarté n'a pas d'importance, car dans votre IDE (vraisemblablement Visual Studio), vous pouvez survoler un nom et être informé par le système d'où vient le nom. Par exemple:
Maintenant, en théorie, je réalise que cela signifie que lorsque vous regardez avec un éditeur de texte, vous ne pouvez pas dire d'où viennent les types en C # ... mais dans la pratique, cela ne me pose pas de problème. À quelle fréquence consultez-vous le code et ne pouvez-vous pas utiliser Visual Studio?
Ceci est révélateur pour moi. De nombreux programmeurs Python préfèrent une approche de codage avec un éditeur de texte, utilisant quelque chose comme Sublime Text 2 ou vim, où il est question de code, d'outils de ligne de commande, d'accès direct et de manipulation de dossiers et de fichiers. L'idée de dépendre d'un IDE pour comprendre le code à un niveau aussi bas semble anathème. Il semble que la culture C # soit radicalement différente sur ce point. Et je me demande si je dois simplement accepter et accepter cela dans le cadre de mon apprentissage du C #.
Ce qui m'amène à ma question ici: le développement de C # est-il effectivement indissociable de l'EDI que vous utilisez?
using MyType = MyNamespace.MyType;
?
global::
et travailler à partir de là. using
ne rend rien disponible qui ne l'était pas auparavant; cela facilite seulement l'accès (comme dans le cas où il est moins nécessaire de taper pour utiliser une classe particulière).