Я программист на Python, изучающий C #, который пытается перестать беспокоиться и просто любит C # за то, что он есть, вместо того, чтобы постоянно сравнивать его с Python.
Я поймал один момент: отсутствие ясности относительно того, где вещи определены, как подробно описано в этом вопросе переполнения стека . Вкратце: в C # using foo
не говорится о том, какие имена foo
становятся доступными, что аналогично from foo import *
Python - форма, которая не поощряется в культуре кодирования Python за то, что она неявная, а не более явный подход from foo import bar
.
Я был довольно поражен ответами Stack Overflow на этот вопрос от программистов на C #, которые заключались в том, что на практике это отсутствие явности не имеет большого значения, потому что в вашей IDE (предположительно Visual Studio) вы можете просто навести курсор на имя и сказать система, откуда исходит название. Например:
Теперь, в теории, я понимаю, что это означает, что когда вы просматриваете текстовый редактор, вы не можете сказать, откуда берутся типы в C # ... но на практике я не считаю, что это проблема. Как часто вы на самом деле смотрите на код и не можете использовать Visual Studio?
Это откровение для меня. Многие программисты Python предпочитают подход к текстовому редактору для кодирования, используя что-то вроде Sublime Text 2 или vim, где все дело в коде, плюс инструменты командной строки и прямой доступ и манипулирование папками и файлами. Идея зависимости от IDE для понимания кода на таком базовом уровне кажется анафемой. Кажется, культура C # радикально отличается в этом вопросе. И мне интересно, нужно ли мне просто принять и принять это как часть моего изучения C #.
Это приводит меня к моему вопросу: эффективно ли развитие C # неотделимо от используемой вами среды IDE?
using MyType = MyNamespace.MyType;
?
global::
и продолжить свой путь. using
не делает ничего доступного, чего не было раньше; это только облегчает доступ (как при меньшем наборе текста, необходимом для использования определенного класса).