Jestem programistą Python uczącym się języka C #, który próbuje przestać się martwić i po prostu uwielbiam język C # za to, czym jest, zamiast ciągle porównywać go z Pythonem.
Jestem przyłapany na jednym punkcie: braku jednoznaczności na temat tego, gdzie rzeczy są zdefiniowane, jak szczegółowo opisano w pytaniu Przepełnienie stosu . W skrócie: w języku C # using foo
nie mówi, z jakich nazw foo
są udostępniane, co jest analogiczne jak from foo import *
w Pythonie - forma, która jest zniechęcana w kulturze kodowania w Pythonie, ponieważ jest niejawna, a nie bardziej jawna from foo import bar
.
Uderzyły mnie odpowiedzi Stack Overflow na ten temat od programistów C #, co w praktyce oznacza, że ten brak jawności nie ma tak naprawdę znaczenia, ponieważ w twoim IDE (prawdopodobnie Visual Studio) możesz po prostu najechać myszką na nazwę i zostać poinformowanym przez system, z którego pochodzi nazwa. Na przykład:
Teraz teoretycznie zdaję sobie sprawę, że oznacza to, że patrząc na edytor tekstów, nie możesz powiedzieć, skąd pochodzą typy w C # ... ale w praktyce nie uważam tego za problem. Jak często faktycznie patrzysz na kod i nie możesz używać programu Visual Studio?
To jest dla mnie odkrywcze. Wielu programistów Pythona preferuje podejście edytora tekstu do kodowania, używając czegoś takiego jak Sublime Text 2 lub vim, gdzie chodzi o kod, a także narzędzia wiersza poleceń i bezpośredni dostęp do folderów i plików oraz manipulowanie nimi. Pomysł bycia zależnym od IDE w celu zrozumienia kodu na tak podstawowym poziomie wydaje się anatemą. Wygląda na to, że kultura C # jest pod tym względem zupełnie inna. I zastanawiam się, czy muszę to zaakceptować i przyjąć w ramach mojej nauki języka C #.
Co prowadzi mnie do mojego pytania tutaj: czy programowanie w C # jest skutecznie nierozerwalnie związane z używanym IDE?
using MyType = MyNamespace.MyType;
?
global::
i pracować odtąd. using
nie udostępnia niczego, co nie było wcześniej; ułatwia jedynie dostęp (ponieważ wymaga mniej pisania, aby użyć konkretnej klasy).