Sono un programmatore di Python che sta imparando C # che sta cercando di smettere di preoccuparsi e adoro C # per quello che è, piuttosto che confrontarlo costantemente con Python.
Sono sorpreso da un punto: la mancanza di esplicitazione su dove sono definite le cose, come dettagliato in questa domanda Stack Overflow . In breve: in C #, using foo
non ti dice quali nomi foo
vengono resi disponibili, il che è analogo a from foo import *
Python - una forma che è scoraggiata nella cultura del codice Python per essere implicita piuttosto che per l'approccio più esplicito di from foo import bar
.
Sono stato piuttosto colpito dalle risposte di Stack Overflow a questo punto dai programmatori C #, il che era che in pratica questa mancanza di esplicitazione non ha davvero importanza perché nel tuo IDE (presumibilmente Visual Studio) puoi semplicemente passare sopra un nome e farti dire da il sistema da cui proviene il nome. Per esempio:
Ora, in teoria, mi rendo conto che questo significa che quando stai guardando con un editor di testo, non puoi dire da dove provengono i tipi in C # ... ma in pratica, non trovo che questo sia un problema. Con quale frequenza stai effettivamente visualizzando il codice e non riesci a utilizzare Visual Studio?
Questo è rivelatore per me. Molti programmatori Python preferiscono un approccio alla codifica con un editor di testo, usando qualcosa come Sublime Text 2 o vim, in cui è tutto basato sul codice, oltre a strumenti da riga di comando e accesso diretto e manipolazione di cartelle e file. L'idea di dipendere da un IDE per comprendere il codice a un livello così basilare sembra un anatema. Sembra che la cultura C # sia radicalmente diversa su questo punto. E mi chiedo se devo solo accettarlo e accettarlo come parte del mio apprendimento di C #.
Il che mi porta alla mia domanda qui: lo sviluppo di C # è effettivamente inseparabile dall'IDE che usi?
using MyType = MyNamespace.MyType;
?
global::
e lavorare da lì. using
non rende disponibile nulla che non fosse prima; rende solo più facile l'accesso (come in una digitazione meno necessaria per utilizzare una determinata classe).