Итак, мы закончили первый модуль Лаббокской академии кодирования и приступили к второму модулю — C#. Я начал немного изучать C# примерно в январе 2019 года в рамках подготовки к курсу. В то время, все еще работая в основном с Ruby, я не слишком любил этот язык, особенно необходимость объявлять тип для каждой переменной. Однако за последние полторы недели я действительно начал получать удовольствие от языка. Ниже приведены мои лучшие ответы на некоторые вопросы, предназначенные для знакомства новичков с C#. Наслаждаться!

  1. Описать C#. Что это? Когда, почему и кто его разработал?

Созданный Андерсом Хейлсбергом в 2000 году, C# — это надежный язык, полезный для множества различных приложений. Разработчики используют C# для создания таких вещей, как «клиентские приложения Windows, веб-службы XML, распределенные компоненты, клиент-серверные приложения, приложения баз данных и многое другое» (doc.microsoft.com). Хейлсберг создал C# по запросу Microsoft в ответ на Java. Создатели Java не позволили Microsoft вносить изменения в язык, поэтому Microsoft в конечном итоге создала свой собственный аналогичный язык.

C# используется в основном в сочетании с Microsoft .NET Framework. Это объектно-ориентированный язык, что означает, что вы используете язык для создания «объектов» — классов, методов, контейнеров значений — которые можно вызывать для выполнения действий и возврата значений. Он также безопасен для типов, что означает, что на основе определенной семантики программа не будет выполнять код, который генерирует исключения или не имеет смысла; правила должны соблюдаться для выполнения программы. Такая функция была реализована для решения проблем, связанных с эксплуатацией безопасности, для которых ее небезопасный предшественник С++ открыл дверь.

2. В чем разница между public, static и void?

Как и многие другие языки, C# дает разработчикам возможность классифицировать свои методы для достижения различных результатов. Модификатор «public» используется, чтобы сообщить компилятору, что у любого есть разрешение на доступ к методу Main. Вы также можете иметь защищенные или частные методы, которые ограничивают доступ. Когда вы добавляете ключевое слово «статический», вы объявляете, что этот метод не должен быть создан для того, чтобы быть вызванным. «Void» — это модификатор, сообщающий компилятору, что этот метод не возвращает значение. Поэтому, если вы пишете метод, который принимает входные данные, а затем выводит значение, которое можно вызвать, вам не следует использовать ключевое слово «void».

3. Что такое типы значений и ссылочные типы?

Типы значений и ссылочные типы — это типы данных C#. По своей базовой концепции они представляют собой контейнеры или объекты, имеющие отношение к некоторым данным. Разница между ними заключается в том, хранят ли они значение в своем собственном пространстве памяти или указывают (ссылку) на то, где хранится значение.

Таким образом, типы значений, такие как int i = 32, хранят свои значения в своем собственном пространстве памяти в ОЗУ. Другими примерами типов значений являются:

  • логический
  • байт
  • уголь
  • десятичный
  • двойной
  • перечисление
  • плавать
  • длинная
  • сбайт
  • короткая
  • структура
  • не
  • улонг
  • ушорт

Однако ссылочные типы не хранят свое значение в своем пространстве памяти, а вместо этого хранят ссылку на то, где хранится значение. Примеры ссылочных типов:

  • нить
  • класс
  • делегаты
  • массивы

Следует отметить, что когда вы передаете значения из переменных типа значения из одного метода в другой, создается копия переменной, созданная в этом другом методе, а это означает, что если значение изменяется в одном методе, это не влияет на другой метод. Однако для ссылочных типов ссылка на значение передается другому методу. Когда это происходит, если значение изменяется, ссылка изменяется, и теперь исходная переменная будет выводить новое значение.

4. Что такое запечатанные классы в C#?

Запечатанные классы — это классы, обозначенные как «запечатанные», чтобы их нельзя было наследовать. Как правило, при создании классов цель состоит в том, чтобы вызвать их свойства, методы, атрибуты и т. д. для использования и создать другие классы, которые наследуют такие вещи от родительского класса. Однако бывают случаи, когда вы можете не захотеть, чтобы другие разработчики создавали классы, производные от одного из ваших классов. В таком случае вы можете объявить «запечатанный класс ClassName», и теперь этот класс не наследуется.

5. Что такое перегрузка методов?

Перегрузка метода — это создание нескольких функций с одинаковым именем, но разными параметрами, такими как число, порядок и тип параметров. Поскольку функции имеют одинаковое имя, в компиляторе они различаются только структурой параметров. Вы не можете создавать функции с одинаковыми именами и структурой параметров. Также невозможно иметь разные типы возврата среди ваших перегруженных методов, это приведет к ошибке времени компиляции.

Вопрос в том, зачем вам это вообще? Перегрузка метода полезна, когда вам нужно выполнить одну и ту же операцию, например сложение, но вам нужно иметь возможность делать это с разными параметрами (т.е. один раз вам нужно добавить только два значения, а другой раз вам нужно добавить 3 значения). и вернуть сумму), и у вас не так много осмысленных имен, чтобы указать все различные непредвиденные обстоятельства для добавления. Так что в каком-то смысле это избавляет вас от необходимости придумывать кучу разных имен для практически одного и того же.

6. Разработчики должны постоянно учиться. На собеседованиях вас спросят, что вы изучаете прямо сейчас. Это потому, что вы всегда должны оставаться на вершине игры и узнавать о новых вещах. Так что обсуждайте то, что вы узнали на этой неделе, как будто кто-то только что спросил вас.

Недавно я углубился в строковые свойства и методы C#, чтобы создать программу, которая преобразует английские слова и предложения в поросячью латынь. При создании этой программы мне показалось очень интересным то, что строки неизменяемы, то есть их нельзя изменить. Итак, когда вы вызываете метод для строки, string.split(); например, вы не изменяете исходную строку, а создаете измененную копию. Понимание того, что это пригодилось для ввода пользовательского ввода, который может быть смесью прописных и строчных букв, создания копии этого ввода, состоящей из строчных букв, а затем использования этой копии для сравнения с массивами и т. д. Затем, после выполнения функций, я могу вернуть исходное слово, а не значение в нижнем регистре, объединенное словами «ау» или «яй», и ввод пользователя будет выглядеть так, как он его первоначально ввел. Знание этого также помогло, так что, когда мне нужно изменить исходное слово (т.е. отрезать несколько передних символов после того, как найдена гласная, а затем добавить их к задней половине), я знаю, что нужно сохранить «половинки» в новой строке. переменные.

Я также помогал другу редактировать тему Word Press для его бизнеса по ремонту устройств. Я изучил общую навигацию по панели инструментов Word Press, как устанавливать плагины, запускать резервные копии и что вы можете использовать визуальный композитор wp Bakery для внесения множества изменений в настройки, как на внешнем, так и на внутреннем интерфейсе. Однако есть некоторые шаблоны .php, которые не примут мои изменения, поэтому в настоящее время я просматриваю исходные файлы и пытаюсь найти функции, которые позволяют мне использовать как конкретный шаблон, так и возможность добавлять контент в этот шаблон. .

7. Является ли код C# управляемым или неуправляемым кодом?

Прежде всего, что такое управляемый и неуправляемый код? Разница между двумя типами кода заключается в том, как они преобразуются в машинный код и чем. C# — это управляемый код, потому что он использует среду Common Language Runtime (CLR) .NET Framework, которая берет код и компилирует его в машинный код, а также обрабатывает такие вещи, как управление памятью и безопасность типов. Это делается в качестве гарантии. Неуправляемый код, такой как c/c++, — это код, который напрямую преобразуется в машинный код операционной системой, и разработчик должен заниматься управлением памятью, безопасностью типов и т. д.

8. Расскажите нам о некоторых преимуществах C#?

У языка C# много преимуществ, и, возможно, именно поэтому в настоящее время он является отраслевым стандартом (по словам нескольких разработчиков, с которыми я разговаривал). Что хорошо в C#, так это то, что это очень выразительный, но простой для изучения язык, особенно если у вас уже есть опыт работы с другим языком. Как и другие языки, он объектно-ориентированный, что является плюсом, но при этом очень быстрый. Он также безопасен для типов, что иногда (лично) может быть немного болезненным, но помогает защититься от эксплойтов безопасности. Он также поддерживает интероперабельность, масштабируемость и возможность обновления. Поскольку он был разработан и поддерживается корпорацией Майкрософт, существует множество подробных документов, которые помогут разработчикам. Даже с тем, что было перечислено до сих пор, в C# есть еще больше возможностей, которые делают его отличным языком для разработки.

9. Что такое компилятор C#?

C# сначала компилируется компилятором… C#. Я пока не уверен, есть ли у него конкретное имя, но этот компилятор «переводит» код на промежуточный язык (IL), который сохраняется в виде файла .exe или .dll. Теперь, когда код находится в IL, среда Common Language Runtime (CLR) .NET Framework компилирует, «переводит» код в машинный код. Эта компиляция, однако, выполняется JIT-компилятором. Название JIT уместно, потому что код IL не компилируется до тех пор, пока пользователь не попытается его использовать.

10. Какой строковый метод используется для конкатенации двух строк в С#?

Чтобы объединить две строки, вы можете использовать функцию String.Concat(); метод. Метод Concat можно перегружать, в списке перегруженных методов 11. Это можно сделать несколькими другими способами: с помощью оператора «+» или с интерполяцией — $«{…}{…}» — или с помощью метода String Builder или String.Format — («…{0}», Переменная).

Интерполяция мне больше всего нравится просто потому, что именно этому Зед Шоу научил в своей книге Learn Ruby the Hard Way. Но оператор +, безусловно, удобен в использовании. Я еще не использовал метод Concat, однако я уверен, что буду использовать его в ближайшее время.

Это первая неделя. Возвращайтесь на следующей неделе, чтобы узнать больше. И не забывайте практиковать свои гаммы….

Ура!