Учебник по C #: основы, необходимые для освоения C #



Эта статья по C # Tutorial поможет вам получить подробные сведения об основных принципах C # вместе с примерами в реальном времени для лучшего понимания.

C # - это универсальный и надежный язык программирования, разработанный корпорацией Microsoft в 2000 году как смертельный конкурент Java. Это самый популярный и доминирующий язык программирования, когда речь идет как о веб-разработке, так и о разработке настольных приложений.

В этом руководстве по C # мы изучим следующие концепции.





Основы C #

Введение в язык программирования C #

Еще в начале 90-х Java была ведущим языком программирования для веб-разработки, разработки настольных приложений и многих других областей. Microsoft хотела создать конкурента с множеством расширенных функций, которые могли бы значительно обогнать Java.



C#-Tutorial-hejlsberg_bio

Это было в 2000 году, Андерс Хейлсберг и его команда из Microsoft придумали идею C #, получившую в народе название C-Sharp. Эта инициатива была одобрена Международной организацией по стандартизации. (ГЛАВНЫЙ) и Европейская ассоциация производителей компьютеров (ECMA). и, наконец, C # входит в мир разработки программного обеспечения..

Особенности языка программирования C #



  • Объектно-ориентированный язык программирования

Подход к объектно-ориентированному программированию - это то, что делает C # Sharp самым удобным для программиста и простым в разработке и сопровождении языком программирования.

  • Типобезопасный язык

Смысл Type-Safe заключается в том, что компилятору будет предоставлен доступ только к той области памяти, которая имеет разрешение на выполнение. Эта функция повышает безопасность кода до экспоненциального уровня.

  • Совместимость

Функция взаимодействия делает C # достаточно способным делать все, что присуще C ++, более эффективным способом, который может превзойти сам C ++.

  • Богатая библиотека

C # предоставляет доступ к множеству встроенных библиотек, которые предоставляют предварительно запрограммированные функции для сокращения времени, затрачиваемого на процесс разработки.

  • Масштабируемость и возможность обновления

C # был разработан, чтобы превзойти другие языки программирования. Следовательно, он всегда открыт для обновлений и обладает высокой масштабируемостью благодаря своим функциям.

  • Компонентная ориентация

Разработчики Microsoft использовали компонентный подход при разработке C #. Это наиболее распространенная методология разработки, обеспечивающая высокую масштабируемость и актуальность C #.

  • Структурированный язык

Подход структурированного программирования предпочтительнее на протяжении жизненного цикла разработки программного обеспечения, поскольку разработка, компиляция и развертывание программного обеспечения упрощается по сравнению с подходом, ориентированным на процедуры.

  • Быстрый

Программирование на C # происходит быстрее при компиляции и выполнении по сравнению с C ++ и другими языками программирования.

Установка

Доказано, что Microsoft Visual Studio лучший в своем классе редактор для программирования на C #. Мы установим и настроим Microsoft Visual Studio для выполнения наших программ на C #, выполнив шаги, указанные ниже:

Шаг 1 : Скачать Microsoft Visual Studio

Google для последняя версия Visual Studio и скачать установить файл в вашу локальную систему, а затем бегать установочный файл как администратор.

Шаг 2. Выберите пакет .NET Desktop Development.

После запуска установщика редактор Visual Studio будет успешно загружен в вашу локальную систему. Позже на экране рабочего стола появится диалоговое окно с запросом конкретный пакет вам нужно в вашей системе. Здесь вам нужно выбрать .NET Desktop Development пакет.

Шаг 3. Установите среду C #

Как только ваши пакеты для .NET разработка загружаются, то на вашем экране отобразится другое диалоговое окно с вопросом о среде разработки, которую вы ищете. Здесь вам нужно выберите среду для C #.

Шаг 4: Создайте свой первый проект

Как только среда настроена, все готово. Запустите Visual Studio и выберите создать новый проект в отображаемом диалоговом окне.

Вы будете перенаправлены в следующее диалоговое окно, где вам нужно выбрать библиотеку классов как .NET Standard как показано ниже.

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

с использованием системного класса Edureka {static void Main (string [] args) {Console.WriteLine ('Добро пожаловать в Edureka !, Удачного обучения ..!')}}

//Вывод:

Давайте выполним нашу первую программу на C #.

Структура программы C #

Теперь, когда мы выполнили нашу первую программу на C #, давайте подробно разберемся с ее структурой. Простая программа на C # состоит из следующих частей.

с использованием системного пространства имен ConsoleApplication1 {публичный класс Edureka {public static void Main (string [] args) {Console.WriteLine ('Добро пожаловать в Edureka !, Удачного обучения ..!')}}}

//Вывод:

Добро пожаловать в Edureka !, Удачного обучения ..!

  • класс: класс можно в целом определить как ключевое слово который используется для определения класса в программе C #.
  • Эдурека: Это имя Класс. Класс часто рассматривается как проект, в котором хранятся члены и методы, связанные с классом.
  • Основной: В основном это основной метод всей программы C #, он действует как шлюз для управления входом в программу. Он выполняется до того, как будет выполнен любой другой метод программы.
  • недействительно: Этот сегмент кода предназначен для тип возврата метода. Это может быть любой тип данных, кроме void. Пустота означает, что метод не имеет возвращаемых данных.
  • статический: Это ключевое слово в котором говорится, что объявленные члены данных являются статическими, а выделенная память выделена объявленным членам.
  • String [] args: Он похож на аргументы командной строки, которые мы используем в нашей программе. Пока мы выполняем нашу программу, мы в основном передаем некоторые аргументы который будет принят программой из-за этого утверждения.
  • System.Console.WriteLine («Добро пожаловать в Edureka! Удачного обучения ...!») Вот, Система это пространство имен. Консольэто категория, обозначеннаяв пространстве имен System. В WriteLine () это тостатическийтехникаконсоликатегория, которая используется для записитекст на консоли.

Теперь давайте изучим типы данных, доступные в C #.

Типы данных

Типы данных в C # делятся на три категории, описанные ниже.

Типы данных значений

В Типы данных значений расположены в System.ValueType Библиотеки и всегда готовы к прямому доступу, а переменные могут быть напрямую присвоены определенному значению. Типы данных значений далее подразделяются на два типа, как показано ниже:

  • Предопределенные типы данных
  • Пользовательские типы данных

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

Пример:

int, float, char, short double и т. д.

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

Пример: структура, перечисление

Тип данных Диапазон выделенной памяти Объем памяти
подписанный символ От -128 до 127 1 байт
беззнаковый символ От 0 до 127 1 байт
char От -128 до 127 1 байт
подписанный короткий От -32 768 до 32 767 2 байта
беззнаковый короткий От 0 до 65 535 2 байта
короткая От -32 768 до 32 767 2 байта
подписанный int -2 147 483 648 до -2 147 483 647 4 байта
беззнаковое целое От 0 до 4 294 967 295 4 байта
int -2 147 483 648 до -2 147 483 647 4 байта
подписан долго -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 8 байт
беззнаковый длинный От 0 до 18 446 744 073 709 551 615 8 байт
длинная -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 8 байт
плавать 1,5 * 10-45 - 3,4 * 1038, (семизначная точность) 4 байта
двойной 5,0 * 10-324 - 1,7 * 10308, (15-значная точность) 8 байт
десятичная дробь -7,9 * 10-28 - 7,9 * 1028, (28-значная точность) 16 байт


Тип данных указателя

Тип указателя - это простой тип данных. Его функциональность полностью аналогична указателям в C. Они предназначены для хранения адреса другого указателя.

float * ptr

Справочные типы данных

Название говорит само за себя. В Справочные типы данных фактически не хранят переменные, вместо этого они хранят значение ссылки для этой конкретной переменной. Другими словами, они хранят адрес фактической переменной.

Справочные переменные подразделяются на три различных типа, как указано ниже:

  • Тип объекта

Тип данных объекта доступен в System.Object Класс.Предметтипыможет бытьназначен наценностидругие типы,Справкатипы, предопределенный, определяемый пользователемтипы. Но прежденазначениеценности, это требует тип конверсия.

object abc abc = 50 // это называется боксом
  • Динамический Тип

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

динамический x = 10
  • Тип строки

Тип String доступен в System.String класс. Тип String предназначен для хранения строковых литералов. Строковые литералы хранятся в двух формах вдве формы

    • цитируется
    • @quoted.
Строка S = 'Edureka'
  • В @quoted строковый литерал выглядит как
@ 'Edureka'

Теперь давайте разберемся с переменными.

Переменные

Переменные - это имена, выделенные для области памяти, в которой хранятся определенные данные, данные пользователем, и эти данные легко доступны с помощью имени переменной. В C # доступно пять типов переменных.

Тип пример
Значение NULL Нулевые данные
Булево Правда и ложь
Целое число Инт, символ, байт, короткий, длинный
Плавать Поплавок и двойной
Десятичная дробь Десятичная дробь

Пример:

int a, b double x float p char abc

Правила, которым необходимо следовать при объявлении переменных в C #

  • Переменная может включать буквы, цифры и символы подчеркивания.
  • Имя переменной может начинаться только с алфавита или только символа подчеркивания.
  • Переменные не могут начинаться с цифры или специального символа.
  • Между именами переменных не допускаются пробелы.
  • Зарезервированные ключевые слова не могут использоваться в качестве имен переменных.

Операторы

Оператор можно определить как специальный символ, который объясняет, что компьютер выполняет определенную математическую или логическую операцию над набором переменных. C # включает множество операторов, перечисленных ниже.

  • Арифметические операторы
  • Операторы отношения
  • Логические операторы
  • Побитовые операторы
  • Операторы присваивания

Арифметические операторы

Оператор пример Описание
+ А + В Добавляет два операнда
- А - Б Вычитает два операнда
* А * Б Умножает два операнда
/ А / Б Делит два операнда
% А% В Остальные два операнда
++ А ++ Операция увеличения
- TO- Операция декремента

Операторы отношения

Оператор пример Описание
== А == В Истина, если оба операнда равны, Иначе Ложь
знак равно А! = В Истинно, если оба операнда не равны, Иначе Ложь
> А> В Верно, если A больше, иначе False
< К Верно, если B больше, иначе False
> = А> = В Верно, если A больше или равно, иначе False
<= К<= B Верно, идентификатор B больше равен, иначе - ложь

Логические операторы

Оператор пример Описание
&& A && B Истина, если оба операнда верны, Иначе Ложь
|| А || B Истинно, если один из операндов истинен, Иначе Ложь
! А! B Изменяет логическое состояние операнда на обратное

Побитовые операторы

К B А и Б А | B А ^ В
один один один один 0
один 0 0 один один
0 один 0 один один
0 0 0 0 0
Оператор пример Описание
~ (~ А) Оператор дополнения Binary One является унарным и имеет эффект «переворачивания» битов.
<< К<<2 Оператор двоичного сдвига влево. Значение левого операнда сдвигается влево на количество битов, указанное правым операндом.
>> А >> 2 Оператор двоичного сдвига вправо. Значение левого операнда перемещается вправо на количество битов, указанное правым операндом.

Операторы присваивания

Оператор пример Описание
знак равно А = В + С A = B + C, B + C присваивается A
+ = А + = В A = A + B, A + B присваивается A
знак равно А - = В A = A-B, A-B присваивается A
знак равно А - = В A = A * B, A * B присваивается A
знак равно А / = В A = A / B, A / B присваивается A
знак равно A% = B A = A% B, A% B назначен на A
<<= К<<= 2 Левый Shift и оператор присваивания
>> = А >> = 2 Правый сдвиг и оператор присваивания
знак равно A & = 2 Побитовый оператор и оператор присваивания
^ = А ^ = 2 Побитовый исключающий оператор и оператор присваивания
| = А! = 2 Побитовый оператор включения и присваивания

Петли

К петля оператор используется для многократного выполнения блока операторов, пока не будет выполнено определенное условие. Язык C # состоит из следующих операторов цикла.

  • Для петли
  • Пока цикл
  • Сделать цикл

Для петли

В для цикла используется для выполнения определенного сегмента кода несколько раз, пока данное условие не будет выполнено.

Синтаксис

for (приращение / уменьшение условия инициализации) {// сегмент кода}

Блок-схема:

Пример:

с использованием общедоступного системного класса ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

//Вывод:

один
2
3
4
5

Пока цикл

В Пока цикл используется для выполнения сегмента кода несколько раз, пока не будет выполнено определенное условие.

Синтаксис

while (условие) {// код для выполнения}

Блок-схема:

Пример:

using System namespace Loops {class Program {static void Main (string [] args) {int x = 5 while (x<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

//Вывод:

Значение a: 5
Значение a: 6
Значение a: 7
Значение a: 8
Значение a: 9
Значение a: 10

Сделать цикл

Цикл Do while полностью аналогичен циклу While Loop, но с той лишь разницей, что условие помещается в конец цикла. Следовательно, цикл выполняется хотя бы один раз.

Синтаксис

do {// код для выполнения} while (условие)

Блок-схема:

Пример:

с использованием системного пространства имен Edureka {class DoWhileLoop {public static void Main (string [] args) {int i = 1, n = 5, product do {product = n * i Console.WriteLine ('{0} * {1} = { 2} ', n, i, product) i ++} while (i<= 10) } } } 

//Вывод:

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50

Условный

Условные утверждения используются для выполнения заявление или группа заявления основанный на каком-то условии. Если состояние верно тогда Операторы C # выполняются в противном случае следующие заявление будет выполнен.

Различные типы условных выражений на языке C ++ следующие:

  1. Если заявление
  2. Заявление If-Else
  3. Вложенный оператор If-else
  4. Лестница If-Else If
  5. Заявление о переключении

Если заявление

Сингл если Оператор на языке C # используется для выполнения кода, если условие истинно. Его также называют односторонним оператором выбора.

Синтаксис

if (логическое-выражение) {// операторы выполняются, если логическое-выражение истинно}

Блок-схема:

Пример:

using System namespace Conditional {class IfStatement {public static void Main (string [] args) {int number = 2 if (number<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

//Вывод:

2 меньше 5
Этот оператор выполняется всегда.

Заявление If-Else

В если еще Оператор на языке C используется для выполнения кода, если условие истинно или ложно. Его также называют двусторонним оператором выбора.

Синтаксис

if (логическое-выражение) {// операторы, выполняемые, если логическое-выражение истинно} else {// операторы, выполняемые, если логическое-выражение ложно}

Блок-схема:

Пример:

using System namespace Conditional {class IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } } 

//Вывод:

12 больше или равно 5
Этот оператор выполняется всегда.

Вложенный оператор If-else

Вложенные если еще Оператор используется, когда программе требуется более одного тестового выражения. Его также называют оператором многостороннего выбора. Когда в высказывании участвует серия решений, мы используем если еще заявление во вложенной форме.

Синтаксис

if (boolean-expression) {if (nested-expression-1) {// код для выполнения} else {// код для выполнения}} else {if (nested-expression-2) {// код для выполнения } else {// код для выполнения}}

Блок-схема:

Пример:

using System namespace Conditional {class Nested {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

//Вывод:

13 самый большой

Лестница в противном случае

В если-иначе-если Оператор используется для выполнения одного кода из нескольких условий. Это также называется заявлением о многолучевом решении. Это цепочка операторов if..else, в которой каждый оператор if связан с оператором else if, а последний будет оператором else.

Синтаксис

if (condition1) {// код, который будет выполняться, если условие1 истинно} else if (condition2) {// код, который будет выполнен, если условие2 истинно} else if (condition3) {// код, который будет выполнен, если условие3 истинно} ... else {// код для выполнения, если все условия ложны}

Блок-схема:

Пример:

с использованием системного класса Edureka {public static void Main (String [] args) {int i = 20 if (i == 10) Console.WriteLine ('i is 10') else if (i == 15) Console.WriteLine (' i равно 15 ') else if (i == 20) Console.WriteLine (' i равно 20 ') else Console.WriteLine (' i отсутствует ')}}

//Вывод:

мне 20

Заявление о переключении

Переключатель Оператор заменяет длинную лестницу if-else-if, которая используется для проверки списка вариантов. Оператор switch содержит одну или несколько меток case, которые проверяются на соответствие выражению switch. Когда выражение соответствует регистру, будут выполнены связанные с ним операторы.

Синтаксис

switch (переменная / выражение) {case value1: // Операторы выполняются, если выражение (или переменная) = value1 break case value2: // Операторы выполняются, если выражение (или переменная) = value1 break ... ... ... .. . ... ... default: // Операторы выполняются, если ни один регистр не соответствует}

Блок-схема:

Пример:

с использованием системного пространства имен Conditional {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Enter an алфавит') ch = Convert.ToChar (Console.ReadLine ()) switch (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Vowel') прерывает регистр 'o': Console.WriteLine ('Vowel') break case 'u': Console.WriteLine ('Vowel') break default: Console.WriteLine ('Not a vowel') break}}}}

//Вывод:

Введите алфавит
является
Гласная буква

Струны

Строка Datatype является членом System.String Класс. Он способен хранить символьный тип данных. Мы можем выполнять различные операции со Stings, такие какобъединение, сравнение, получение подстроки, поиск, обрезка, замена и многое другое.

Аналогия строки и строки

В C # Строка и строка эквивалентны. Строка слов - это ключевое слово и действует как System.String класс. Мы можем использовать любую из версий для объявления строк.

Синтаксис:

string s1 = 'Edureka' // создание строки с использованием ключевого слова string String s2 = 'Happy Learning' // создание строки с использованием класса String

Пример:

с использованием общедоступного системного класса StringExample {public static void Main (string [] args) {string s1 = 'Edureka' char [] ch = {'C', 's', 'h', 'a', 'r', ' p ',' ',' T ',' u ',' t ',' o ',' r ',' i ',' a ',' l '} строка s2 = новая строка (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

//Вывод:

Эдурека
Учебник по Csharp

Строковые методы в C #

Метод Описание
Клонировать () Используется для возврата ссылки на этот экземпляр String.
Сравнить (Строка, Строка) Используется для сравнения двух указанных объектов String.
Concat (строка, строка) Объедините два указанных экземпляра String.
Содержит (строка) Вернуть значение, указывающее на указанную подстроку
Копировать (Строка) Используется для создания нового экземпляра String с тем же значением
CopyTo (Int, Char [], Int, Int) Копирует символы с указанной позиции
Равно (Строка, Строка) Определяет, что два объекта String имеют одинаковое значение.
Формат (строка, объект) Заменить один или несколько элементов формата в указанной строке
IndexOf (строка) Сообщает отсчитываемый от нуля индекс первого вхождения
Вставить (Int32, String) Возвращает новую строку, в которую вставлена ​​строка по индексу.
IsInterned (строка) Указывает, что эта строка находится в форме нормализации Юникода C.
IsNullOrEmpty (строка) Указывает, что указанная строка является пустой или пустой строкой.
IsNullOrWhiteSpace (строка) Используется, чтобы указать, является ли указанная строка пустой, пустой,
Присоединиться (String, String []) Используется для объединения всех элементов массива строк
LastIndexOf (Char) Сообщает отсчитываемую от нуля позицию индекса последнего символа
LastIndexOfAny (Char []) Сообщает отсчитываемую от нуля позицию индекса последнего символа
Удалить (Int32) Возвращает новую строку, в которой все символы
Заменить (Строка, Строка) Возвращает новую строку, в которой все вхождения строки
Разделить (Char []) Используется для разделения строки на подстроки
StartsWith (строка) Он используется для проверки того, является ли начало этой строки
Подстрока (Int32) Он используется для получения подстроки из этого экземпляра.
ToCharArray () Копирует символы этого экземпляра в массив Unicode.
Нанизывать() Он используется для возврата экземпляра String.
Отделка() Обрезает строку


Массивы

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

C # поддерживает следующие типы массивов.

  • Одномерный массив
  • Многомерный массив
  • Зубчатый массив

Одномерный массив

В одномерном массиве элементы хранятся в виде одной строки.

Синтаксис

int [] arr = new int [5] // создание массива

Пример:

с использованием общедоступного системного класса ArrayExample {public static void Main (string [] args) {int [] arr = new int [5] arr [0] = 10 arr [1] = 20 arr [2] = 30 arr [3] = 40 arr [4] = 50 для (int i = 0 i 

//Вывод:

10
двадцать
30
40
50

Многомерный массив

В многомерном массиве элементы хранятся в виде нескольких измерений, таких как матрица, куб и т. Д.

Синтаксис

int val = a [2,3]

Пример:

с использованием системного пространства имен ArrayApplication {class MyArray {static void Main (string [] args) {int [,] a = new int [5, 2] {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}} int i, j для (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

//Вывод:

а [0,0] = 0
а [0,1] = 0
а [1,0] = 1
а [1,1] = 2
а [2,0] = 2
а [2,1] = 4
а [3,0] = 3
а [3,1] = 6
а [4,0] = 4
а [4,1] = 8

Зубчатый массив

Jagged Array - это просто массив массивов.

Пример:

с использованием системного пространства имен ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, new int [] {2,4}, new int [] {3, 6}, new int [] {4, 8}} int i, j for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

//Вывод:

а [0] [0] = 0
а [0] [1] = 0
а [1] [0] = 1
а [1] [1] = 2
а [2] [0] = 2
а [2] [1] = 4
а [3] [0] = 3
a [3] [1] = 6
a [4] [0] = 4
а [4] [1] = 8

Коллекции

Коллекцию можно просто рассматривать как группу объектов, собранных вместе, чтобы применить некоторые функции к собранным данным. Операции, которые когда-то могут быть выполнены с коллекцией:

  • объект магазина
  • объект обновления
  • удалить объект
  • получить объект
  • объект поиска, и
  • объект сортировки

Типы коллекций

Есть три различных возможности работы с коллекциями. Три пространства имен упомянуты ниже:

  • System.Collections.Generic классы
  • System.Collections классы
  • System.Collections.Concurrent классы

Класс System.Collections.Generic имеет следующие разновидности классов:

  • Список
  • Стек
  • Очередь
  • LinkedList
  • HashSet
  • SortedSet
  • толковый словарь
  • SortedDictionary
  • SortedList

В System.Collections классы считаются устаревшими. они включают следующие классы.

  • ArrayList
  • Стек
  • Очередь
  • Хеш-таблица

В System.Collections.Concurrent классыпространство имен предоставляет классы для поточно-ориентированных операций. Теперь несколько потоков не будут создавать проблемы для доступа к элементам коллекции. классы, доступные в этом:

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • ConcurrentDictionary
  • Перегородки
  • Перегородки
  • OrderablePartitioner

Список

В список рассматривается как структура данных, доступная в System.Collection.Generics пространство имен. Он может хранить и извлекать элементы. Список может хранить повторяющиеся элементы.

Пример:

с использованием системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {var names = new List () names.Add ('Sandhya') names.Add ('Arun') names.Add ( 'Prashanth') names.Add ('Kiran') foreach (имя переменной в именах) {Console.WriteLine (имя)}}}

//Вывод:

Сандхья
Арун
Прашант
Kiran

Набор хешей

C # HashSetкатегория часто используетсямагазин,увезтииличитать компоненты. Этонехранить дубликаткомпоненты.это настоятельно рекомендуетсяиспользовать HashSet категорияеслиу тебя естьхранитьисключительно отличительный компоненты . его находится в пространстве имен System.Collections.Generic.

Пример:

с использованием системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Пуджари') имена. Добавить ('Имран') имена.Добавить ('каран') foreach (имя переменной в именах) {Console.WriteLine (имя)}}}

//Вывод:

Сунил
Амар
Пуджари
Имран
Каран

Сортированный набор

C # SortedSetкласс часто приученымагазин, удалять или читать элементы . Он поддерживает порядок возрастания инехранить дубликатэлементы.это быстроиспользовать SortedSetкатегорияеслиу тебя естьхранить отличительный компоненты и поддерживать порядок возрастания.егонаходится в пространстве имен System.Collections.Generic.

Пример:

с использованием Системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {var names = new SortedSet () names.Add ('Sanjay') names.Add ('Anuradha') names.Add ( 'Praveen') names.Add ('Ravi') names.Add ('Kajol') foreach (var name in names) {Console.WriteLine (name)}}}

//Вывод:

Анурадха
Каджол
Правин
Рави
Санджай

Стек

В стек это простая коллекция, следующая за КРАЙ или процедура «первым пришел последний ушел» при обработке хранящихся в ней элементов.

Пример:

с использованием системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( 'James') names.Push ('Rajesh') names.Push ('kumar') foreach (строковое имя в именах) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('После Pop элемент Peek:' + names.Peek ())}}

//Вывод:

кумар
Раджеш
Джеймс
Пуджа
Чандан
Элемент взгляда: кумар
Поп: кумар
После попа, элемент взгляда: Раджеш

Очередь

Очередь полностью аналогична стеку, но с той лишь разницей, что очередь следует за ФИФО или принцип «первым пришел - первым ушел» при обработке хранимых в нем элементов.

Пример:

с использованием Системы с использованием общедоступного класса System.Collections.Generic Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( 'John') names.Enqueue ('Raju') names.Enqueue ('Hari') foreach (строковое имя в именах) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('После Dequeue, элемент Peek:' + names.Peek ())}}

//Вывод:

Srujan
Праджат
Джон
Свирепый
День
Элемент взгляда: Сруджан
Dequeue: Srujan
После Dequeue элемент Peek: Prajat

Связанный список

Связанный список представляет собой коллекцию динамической памяти. Элементы в связанном списке сохраняются путем доступа к памяти из кучи и сохранения элементов в непрерывном порядке путем связывания их адресов.

Пример:

с использованием системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') names.AddLast ('jay') names.AddFirst ('sai') foreach (имя переменной в именах) {Console.WriteLine (имя)}}}

//Вывод:

Сай
Границы
Арун
Пракаш
сойка

толковый словарь

толковый словарь категорияиспользуетидеяхеш-таблицы. Он хранит значения напредпосылкаключа. Это содержитотличительныйключиисключительно. Отпомощьключа,мы простопоиск илиубрать элементы.егонаходится в пространстве имен System.Collections.Generic.

Пример:

с использованием системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') names.Add ('3', 'Preetam') names.Add ('4', 'Roy') names.Add ('5', 'Akash') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Вывод:

1 Шива
2 прасада
3 Preetam
4 Рой
5Акаши

Сортированный словарь

В SortedDictionary категорияиспользуетдизайнхеш-таблицы. Он хранит значения наидеяключа. Это содержитотличительныйключей и поддерживает порядок возрастания наидеяключа. Отпомощьключа,мы простопоиск илиубрать элементы.егонаходится в пространстве имен System.Collections.Generic.

Пример:

с использованием системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') names.Add ('5', 'Ramesh') names.Add ('3', 'Vidya') names.Add ('2', 'Pallavi') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Вывод:

1 Шива
2 прасада
3 Preetam
4 Рой
5Акаши

Сортированный список

В SortedList являетсяанмассив пар ключ / значение. Он хранит значения напредпосылкаключа. Сортированный списоккатегориясодержитотличительныйключей и поддерживает порядок возрастания напредпосылкаключа. Отпомощьключа,мы умеем простоискать или удалитьэлементы.егонашел в System.Collections.Generic пространство имен.

Пример:

с использованием системы с использованием открытого класса System.Collections.Generic Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') names.Add ('5', 'Ramesh') names.Add ('3', 'Vidya') names.Add ('2', 'Pallavi') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Вывод:

1 Арун
2 Паллави
3 Видья
4 Вишал
5Рамеш

Структура

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

Пример:

с использованием системной структуры Книги {общедоступная строка заголовок общедоступная строка автор общедоступная строка subject public int book_id} открытый класс Edureka {public static void Main (string [] args) {Книги Book1 Книги Book2 Book1.title = 'Программирование C #' Book1.author = ' Рамчандра Кумар 'Book1.subject =' Учебник по программированию на C ++ 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( 'Название книги 1: {0}', Book1.title) Console.WriteLine ('Книга 1 Автор: {0}', Book1.author) Console.WriteLine ('Тема книги 1: {0}', Book1.subject) Console.WriteLine ('Книга 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Название книги 2: {0}', Book2.title) Console.WriteLine ('Книга 2 Автор: {0}', Book2.author) Console.WriteLine ('Тема книги 2: {0}', Book2.subject) Console.WriteLine ('Книга 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

//Вывод:

Книга 1 название: Программирование на C #
Книга 1 Автор: Рамчандра Кумар
Книга 1 предмет: Учебник по программированию на C ++
Книга 1 book_id: 95908978
Книга 2 название: Telecom Billing
Книга 2 Автор: Каран
Тема книги 2: Учебное пособие по выставлению счетов в телекоммуникациях
Книга 2 book_id: 18674900

Функции

Функция определяется как блок кода основного кода. Функция используется для выполнения операторов, указанных в блоке кода. Функция состоит из следующих компонентов.

  • Название функции: Это отличительное имя, которое используется для вызова функции.
  • Тип возврата: Он определяет тип данных возвращаемого значения функции.
  • Тело: Он содержит исполняемые операторы.
  • Спецификатор доступа: Он определяет доступность функции в приложении.
  • Параметры: Это список аргументов, которые мы можем передать функции во время вызова.

Синтаксис

FunctionName () {// тело функции // оператор возврата}

Пример:

using System namespace FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('To Edureka') Console.WriteLine ('Добро пожаловать' + сообщение)}}}

//Вывод:

Функция внутреннего шоу
Добро пожаловать в Эдурека

Функции могут выполняться 3 различными способами:

  • Звонок по значению
  • Звоните по ссылке
  • Выходной параметр

Звонок по значению

В C # ценность -тип параметрынаходятсяэтот проходрепликапервоначальной стоимостифункция вместоСправка. Этонемодифицироватьпервое значение. Anпоправка созданав пройденномзначение неВозрастособая ценность.в пределахследующий пример,мы получилипроходятценность во всемввызов.

Пример:

с использованием системного пространства имен CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('Значение внутри функции show' + val)} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Значение перед вызовом функции' + val) program.Show (val) Console.WriteLine ('Значение после вызова функции' + val)}}}

//Вывод:

Значение перед вызовом функции 50
Значение внутри функции show 2500
Значение после вызова функции 50

Звоните по ссылке

В методе вызова по ссылке,к ссылка ключевое слово для передачи аргумента как ссылочного типа. Он передает в функцию ссылку на аргументы, а не копию исходного значения. Изменения в переданных значениях являются постоянными и модифицировать исходное значение переменной.

Пример:

с использованием системного пространства имен CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('Значение внутри функции show' + val)} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Значение перед вызовом функции' + val) program.Show (ref val) Console.WriteLine ('Значение после вызова функции' + val)}}}

//Вывод:

Значение перед вызовом функции 50
Значение внутри функции show 2500
Значение после вызова функции 2500

Выходной параметр

Выходной параметробеспечивает вне ключевое слово для передачи аргументов как исходящего типа. Он похож на ссылочный тип, за исключением того, что не требует инициализации переменной перед передачей. Мы должны использовать вне ключевое слово для передачи аргумента как выходного типа. Это полезно, когда мы хотим, чтобы функция возвращала несколько значений.

Пример:

с использованием системного пространства имен OutParameter {class Edureka {public void Show (out int val) {int square = 5 val = square val * = val} static void Main (string [] args) {int val = 50 Edureka program = new Edureka () Console.WriteLine ('Значение перед передачей переменной' + val) program.Show (out val) Console.WriteLine ('Значение после получения выходной переменной' + val)}}}

//Вывод:

Значение перед передачей переменной 50

Ценностьпосле получения выходной переменной 25

Теперь перейдем к объектно-ориентированному программированию.

Объектно-ориентированного программирования

Объектно-ориентированного программирования Системапарадигма программирования, основанная на концепции объекты которые содержат члены данных и методы связанные с ними. Основная цель объектно-ориентированного программирования - повысить гибкость и ремонтопригодность программ.

Особенности объектно-ориентированного программирования:

  • В нем больше внимания уделяется данным, чем процедуре.
  • Программы разбиты на объекты, что упрощает работу.
  • Структуры данных спроектированы таким образом, что они характеризуют объекты.
  • Функции, которые работают наданные объекта помещаются вместе в структуру данных.
  • Данные скрыты и не могут быть доступны внешним функциям без разрешения.
  • Связь между объектами может происходить с помощью функций.
  • Добавление новых данных и функций стало простым.
  • При разработке программ следует восходящему подходу.

Объектно-ориентированные парадигмы в C # следующие.

Перечисление в C #

Enum или также называется перечисление в C # используется для хранения постоянных значений без их изменения в течение всего выполнения программы C #. Этоиспользуется для хранения набора именованных констант, таких как сезон, дни, месяц, размер и т. д.

Пример:

с использованием общедоступного класса системы EnumExample {public enum week {понедельник, вторник, среда, четверг, пятница, суббота, воскресенье} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ('Понедельник = {0}', x) Console.WriteLine ('Пятница = {0}', y)}}

//Вывод:

Понедельник = 0
Пятница = 4

Объектно-ориентированный подход к программированию

Объектно-ориентированный стиль программирования может быть достигнут с помощью методов, описанных ниже.

Инкапсуляция

Инкапсуляция это метод объединения методы вместе с их члены данных.

Пример:

using System namespace Edureka {class Rectangle {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' Ширина: {0} ', ширина) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

//Вывод:

Длина: 50
Ширина: 35
Площадь: 1750

Абстракция

Абстракция это способ скрывать сложная часть кодирования от пользователя, предоставляя ему только необходимую информацию, которая ему нужна.

Пример:

с использованием системного общедоступного абстрактного класса Shape {public abstract void draw ()} открытого класса Rectangle: Shape {public override void draw () {Console.WriteLine ('рисование прямоугольника ...')}} открытого класса Circle: Shape {public override void draw () {Console.WriteLine ('рисование круга ...')}} открытый класс TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

//Вывод:

рисование прямоугольника ...
рисование круга ...

Интерфейс

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

Пример:

используя общедоступный интерфейс системы Drawable {void draw ()} открытый класс Rectangle: Drawable {public void draw () {Console.WriteLine ('рисование прямоугольника ...')}} открытый класс Circle: Drawable {public void draw () {Console .WriteLine ('рисование круга ...')}} открытый класс TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

//Вывод:

рисование прямоугольника ...
рисование круга ...

Полиморфизм

что делает сканер в java

Полиморфизмэто сочетание 'поли' + «Морфы» что означает множество форм. Это греческое слово. Это означает, что сегмент кода может принимать несколько форм. У нас есть два типа полиморфизма.

  • Полиморфизм времени компиляции
  • Полиморфизм времени выполнения

Пример:

с использованием системного общедоступного класса Animal {public string color = 'white'} открытого класса Dog: Animal {public string color = 'black'} открытого класса TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.color)}}

//Вывод:

белый

Наследование

Наследование - это процесс, в котором один объект автоматически приобретает все свойства и поведение своего родительского объекта. Вы можете повторно использовать, расширять или изменять атрибуты и поведение, определенные в другом классе. класс, который наследует членов другого класса, называется производный класс а класс, члены которого унаследованы, называется база класс. Производный класс - это специализированный класс для базового класса.

Пример одноуровневого наследования

с использованием системного пространства имен RectangleApplication {класс Rectangle {защищенная двойная длина защищенная двойная ширина public Rectangle (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ('Длина: {0}', длина) Console.WriteLine ('Ширина: {0}', ширина) Console.WriteLine ('Area: {0}', GetArea ())}} class Tabletop: Rectangle {private Public Tabletop с двойной стоимостью (double l, double w): base (l, w) {} public double GetCost () {double cost cost = GetArea () * 70 возвратных затрат} public void Display () {base.Display () Console .WriteLine ('Cost: {0}', GetCost ())}} class ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

//Вывод:

Длина: 4.5
Ширина: 7,5
Площадь: 33.75
Стоимость: 2362.5

Пример многоуровневого наследования

using System namespace InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} общедоступный интерфейс PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Общая площадь: {0}', Rect.getArea ()) Console.WriteLine ('Всего стоимость краски: $ {0} ', Rect.getCost (area)) Console.ReadKey ()}}}

//Вывод:

Общая площадь: 35
Общая стоимость краски: 2450 долларов США.

Перегрузка

Перегрузка - это ситуация, когда у нас есть два члена, объявленных с одним и тем же именем. Также возможна перегрузка, когда мы объявляем два или более методов с одним и тем же именем. Давайте проверим примеры того и другого.

Перегрузка участников

Пример:

с использованием системного общедоступного класса Edureka {public static int add (int a, int b) {return a + b} public static int add (int a, int b, int c) {return a + b + c}} открытого класса TestMemberOverloading { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

//Вывод:

35 год
60

Перегрузка метода

Пример:

используя Системный публичный класс Edureka {public static int add (int a, int b) {return a + b} public static float add (float a, float b) {return a + b}} публичный класс TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}

//Вывод:

35 год
33,699997

Отмена

Переопределение - это ситуация, когда дочерний класс определяет тот же метод, что и родительский. Давайте разберемся в этом на небольшом примере.

Пример:

с использованием общедоступного системного класса Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} общедоступного класса Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} переопределения открытого класса {public static void Main () {Dog d = new Dog () d.eat ()}}

//Вывод:

Поедание пищи

Пространство имен

В пространство имен в основном используется для обработки нескольких классов, присутствующих в программе. Пространство имен доступно по-разному.

  • System.Console: Здесь Система становится пространством имен
  • Чтобы получить доступ к классу пространства имен, нам нужно использовать namespacename.classname.
  • Мы можем использовать с помощью ключевое слово.

Пример:

using System using First using Second namespace First {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} пространство имен Second {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Happy Learning ')}}} пространство имен открытого класса {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//Вывод:

Добро пожаловать в Эдурека
Счастливого обучения

Файловые операции

В файловые операции доступны в C # следующие:

Операция Описание
BinaryReader Читает примитивные данные из двоичного потока.
BinaryWriter Записывает примитивные данные в двоичном формате.
Буферизованный поток Временное хранилище для потока байтов.
Каталог Помогает управлять структурой каталогов.
DirectoryInfo Используется для выполнения операций с каталогами.
DriveInfo Предоставляет информацию о дисках.
файл Помогает в манипулировании файлами.
FileInfo Используется для выполнения операций с файлами.
FileStream Используется для чтения и записи в любое место в файле.
MemoryStream Используется для произвольного доступа к потоковым данным, хранящимся в памяти.
Дорожка Выполняет операции с информацией о пути.
StreamReader Используется для чтения символов из байтового потока.
StreamWriter Используется для записи символов в поток.
StringReader Используется для чтения из строкового буфера.
StringWriter Используется для записи в строковый буфер.

FileMode

В FileMode - это перечислитель, определяющий несколько методов открытия файлов. Члены перечислителя FileMode описаны следующим образом:

  • Добавить: Он открывает существующий файл и помещает курсор в конец файла или создает файл, если файл не существует.
  • Создайте: Он предназначен для создания нового файла.
  • Создать новый: Он предназначен для указания операционной системе, что она должна создать новый файл.
  • Открыто: Он предназначен для открытия существующего файла.
  • OpenOrCreate: Он разработан, чтобы указать операционной системе, что она должна открывать файл, если он существует, в противном случае она должна создать новый файл.
  • Усечь: Truncate открывает существующий файл и обрезает его размер до нуля байтов.

FileAccess

FileAccess Перечислитель используется для получения доступа к определенному файлу. В него входят следующие члены.

  • Читать
  • Написать
  • Читай пиши

FileShare

В Файловый ресурс Перечислитель используется для совместного использования определенного файла. В него входят следующие члены.

  • Наследуется: Inheritable позволяет дескриптору файла передавать наследование дочерним процессам.
  • Никто: Никто не запрещает доступ к текущему файлу
  • Читать: Чтение позволяет открыть файл для чтения.
  • Читай пиши: ReadWrite позволяет открыть файл для чтения и записи.
  • Написать: Запись позволяет открыть файл для записи.

События

Событие обычно известно как действие, созданное пользователем. Это может быть щелчок мыши или даже одно нажатие клавиши на клавиатуре. Точно так же программы на C # тоже имеют события. Генератор события называется издатель а получатель события называется подписчик.

Издатель

К издатель содержит определение события и делегата. В мероприятие-делегат ассоциация определяется в этом объекте. А издатель объект класса вызывает событие, и о нем уведомляются другие объекты.

Подписчик

К подписчик принимает мероприятие и предоставляет обработчик события. В делегировать в классе издателя вызывает метод / событие обработчик абонентского класса.

Пример:

с использованием системного пространства имен Edureka {публичная строка делегата Del (строка str) class EventBlock {событие Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} публичная строка WelcomeUser (строка имя пользователя) {return 'Добро пожаловать в Edureka . '+ username} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

//Вывод:

Добро пожаловать в Эдурека. Счастливого обучения

Дженерики

Дженерики это концепция предоставления членам и методам класса заполнителей в Время выполнения. Мы можем определить Generics, используя кронштейны. Давайте посмотрим на следующие примеры.

Дженерики в классе

с использованием системного пространства имен Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('Это сообщение из общего класса' ) GenericClass genI = новый GenericClass (123) GenericClass getCh = новый GenericClass ('E')}}}

//Вывод:

Это сообщение из общего класса
123
ЯВЛЯЕТСЯ

Дженерики в методе

с использованием системного пространства имен Edureka {class GenericClass {public void Show (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass genC = new GenericClass () genC.Show ('This сообщение получено из общего метода ') genC.Show (321) genC.Show (' H ')}}}

//Вывод:

Это сообщение от универсального метода
321
ЧАС

Делегаты

В Делегат действует как ссылка на метод. В основном это то же самое, что указатель на функцию в C и C ++, но намного лучше и безопаснее. Делегат в статический метод инкапсулирует только метод. Пока делегат в пример Метод инкапсулирует как метод, так и экземпляр. Лучшее использование делегата - использовать его как мероприятие.

Пример:

с использованием системного делегата int Calculator (int n) открытый класс Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ('After Calculator (После калькулятора) один делегат, новый номер: '+ getNumber ()) c2 (3) Console.WriteLine (' После второго делегата калькулятора новый номер: '+ getNumber ())}}

//Вывод:

После расчета на одного делегата новое число: 45.
После калькулятора два делегата новое число: 135.

Отражение

Отражение требуется для получения метаданных во время выполнения. Ссылка доступна в System.Reflection пространство имен. Для выполнения требуются следующие классы.

  • Тип
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Модуль
  • Сборка
  • AssemblyName
  • Указатель

Типовой класс

Класс C # Type представляет объявления типов для типов классов, типов интерфейсов, типов перечисления, типов массивов, типов значений

Свойства типа

Список важных свойств классов Type упомянут ниже.

Свойство Описание
Сборка Получает сборку для этого типа.
AssemblyQualifiedName Получает полное имя сборки для этого типа.
Атрибуты Получает атрибуты, связанные с типом.
BaseType Получает базовый или родительский тип.
Полное имя Получает полное имя типа.
IsAbstract используется для проверки, является ли тип абстрактным.
IsArray используется для проверки, является ли тип массивом.
IsClass используется для проверки того, является ли тип классом.
IsEnum используется, чтобы проверить, является ли тип Enum.
IsInterface используется, чтобы проверить, является ли тип интерфейсом.
IsNested используется для проверки, является ли тип вложенным.
IsPrimitive используется для проверки, является ли тип примитивным.
IsPointer используется, чтобы проверить, является ли тип указателем.
IsNotPublic используется для проверки, не является ли тип общедоступным.
IsPublic используется для проверки, является ли тип общедоступным.
IsSealed используется, чтобы проверить, является ли тип запечатанным.
IsSerializable используется для проверки того, является ли тип сериализуемым.
MemberType используется для проверки того, является ли тип элементом вложенного типа.
Модуль Получает модуль типа.
имя Получает имя типа.
Пространство имен Получает пространство имен типа.
Свойство Описание
GetConstructors () Возвращает все общедоступные конструкторы для Type.
GetConstructors (BindingFlags) Возвращает все конструкторы для Type с указанным BindingFlags.
GetFields () Возвращает все общедоступные поля для Типа.
GetFields (BindingFlags) Возвращает все общедоступные конструкторы для Type с указанным BindingFlags.
GetMembers () Возвращает все открытые члены для Типа.
GetMembers (BindingFlags) Возвращает все члены для Type с указанным BindingFlags.
GetMethods () Возвращает все общедоступные методы для Type.
GetMethods (BindingFlags) Возвращает все методы для Type с указанным BindingFlags.
GetProperties () Возвращает все общедоступные свойства для Type.
GetProperties (BindingFlags) Возвращает все свойства для Type с указанным BindingFlags.
GetType () Получает текущий тип.
GetType (строка) Получает тип для данного имени.

Примеры отражения:

Получить Тип

Пример:

с использованием общедоступного системного класса GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

//Вывод:

System.Int32

Получить сборку

Пример:

с использованием системы с использованием открытого класса GetAssembly System.Reflection {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

//Вывод:

System.Private.CoreLib, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = 7cec85d7bea7798e

Информация о типе печати

Пример:

с использованием системы с использованием общедоступного класса PrintType System.Reflection {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.FullName) Console.WriteLine (t.BaseType) Console.WriteLine (t.IsClass) Console.WriteLine (t.IsEnum) Console.WriteLine (t.IsInterface)}}

//Вывод:

Правда
Ложь
Ложь

Конструкторы печати

Пример:

с использованием системы с использованием открытого класса System.Reflection PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Конструкторы типа {0} ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c в ci) {Console.WriteLine (c)}}}

//Вывод:

Конструкторы типа System.String ...
Void .ctor (Char [])
Void .ctor (Char [], Int32, Int32)
Void .ctor (символ *)
Пустота .ctor (Char *, Int32, Int32)
Void .ctor(SByte*)
Void .ctor(SByte*, Int32, Int32)
Пустота .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Void .ctor (Char, Int32)
Пустота .ctor (System.ReadOnlySpan`1 [System.Char])

Способы печати

Пример:

с использованием системы с использованием открытого класса System.Reflection PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Методы {0} типа ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m в ci) {Console.WriteLine (m)}}}

//Вывод:

Методы типа System.String ...
System.String заменить (System.String, System.String)
System.String [] Split (Char, System.StringSplitOptions)
System.String [] Split (Char, Int32, System.StringSplitOptions)
System.String [] Разделить (Char [])
System.String [] Разделить (Char [], Int32)
System.String [] Разделить (Char [], System.StringSplitOptions)
System.String [] Split (Char [], Int32, System.StringSplitOptions)
System.String [] Разделить (System.String, System.StringSplitOptions)
System.String [] Разделение (System.String, Int32, System.StringSplitOptions)
System.String [] Разделить (System.String [], System.StringSplitOptions)
System.String [] Split (System.String [], Int32, System.StringSplitOptions) ......

Поля печати

Пример:

с использованием системы с использованием открытого класса System.Reflection PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Поля {0} типа ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f в ci) {Console.WriteLine (f)}}}

//Вывод:

Поля типа System.String ...
System.String пусто

Теперь давайте перейдем к некоторым продвинутым концепциям программирования на C #.

Расширенные концепции C #

Анонимная функция

Функция, у которой отсутствует конкретное имя, называется Анонимный Функции. В C # доступны два типа анонимных функций.

  • Лямбда-выражения
  • Анонимные методы

Пример:

с использованием системного пространства имен LambdaExpressions {class Edureka {делегат int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + j)}}}

//Вывод:

Площадь: 625

Анонимные методы

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

Пример:

using System namespace AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

//Вывод:

Это анонимная функция

Многопоточность

Многопоточность - это процесс, в котором несколько потоков создаются и назначаются для разных задач. это экономит время за счет одновременного выполнения нескольких заданий. Класс многопоточности доступен в System.Threading пространство имен.

System.Threading - пространство имен

В System.Threading пространство имен содержит классы и интерфейсы для облегчения многопоточности. Он предоставляет классы для синхронизации ресурса потока. Список часто используемых классов приведен ниже:

  • Нить
  • Мьютекс
  • Таймер
  • Монитор
  • Семафор
  • ThreadLocal
  • ThreadPool
  • Летучий

Процесс и поток

Процесс на самом деле и применение и считается тяжеловес составная часть. С другой стороны, поток - это один единственный модуль всего приложения. это легкий по сравнению с процессом

Жизненный цикл потока

У каждого потока есть жизненный цикл. Жизненный цикл потока определяется в классе System.Threading.Thread. Ниже приведены этапы жизненного цикла любого потока.

  • Не запущен
  • Runnable (готов к запуску)
  • Бег
  • Не запускается
  • мертв

Класс Thread предоставляет следующие свойства и методы следующим образом.

Свойства резьбы

Свойство Описание
CurrentThread возвращает экземпляр текущего запущенного потока.
Является живым проверяет, жив ли текущий поток.
IsBackground Чтобы получить / установить значение текущего потока в фоновом режиме или нет.
ManagedThreadId используется для получения уникального идентификатора текущего управляемого потока.
имя используется для получения или установки имени текущего потока.
Приоритет используется для получения или установки приоритета текущего потока.
ThreadState используется для возврата значения, представляющего состояние потока.

Методы потока

Метод Описание
Аборт () используется для завершения потока. Это вызывает исключение ThreadAbortException.
Прерывание () используется для прерывания потока, находящегося в состоянии WaitSleepJoin.
Присоединиться() используется для блокировки всех вызывающих потоков, пока этот поток не завершится.
ResetAbort () используется для отмены запроса Abort для текущего потока.
Продолжить() используется для возобновления приостановленного потока. Это устарело.
Сон (Int32) используется для приостановки текущего потока на указанные миллисекунды.
Начните() изменяет текущее состояние потока на Runnable.
Приостановить () приостанавливает текущий поток, если он не приостановлен. Это устарело.
Уступать() используется для передачи выполнения текущего потока другому потоку.

Пример основного потока

с использованием Системы с использованием открытого класса System.Threading Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

//Вывод:

MainThread

Обработка исключений

В исключение это ошибка, выдаваемая программой во время ее выполнения. Мы выполняем обработку исключений, чтобы исключить исключения в нашей программе.

Исключение Описание
System.DivideByZeroException Ошибка при делении числа на ноль.
System.NullReferenceException обрабатывает ошибку, сгенерированную ссылкой на нулевой объект.
System.InvalidCastException обрабатывает ошибку, вызванную недопустимым приведением типов.
System.IO.IOException обрабатывает ошибки ввода / вывода.
System.FieldAccessException Ошибка вызвана недопустимым частным / защищенным доступом.

В C # мы используем 4 ключевых слова для выполнения Обработка исключений:

  • пытаться
  • ловить
  • наконец, и
  • бросить
Пример:
с использованием общедоступного системного класса EdurekExample {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ('Это сообщение из блока catch')}}

//Вывод:

System.DivideByZeroException: попытка разделить на ноль.
в ExExaEdurekample.Main (String [] args) в F: Учебник по C #C # ProgramsConsoleApp1ConsoleApp1Program.cs: строка 10
Это сообщение из блока catch

Пример настраиваемого исключения

с использованием системного общедоступного класса InvalidAgeException: Exception {public InvalidAgeException (String message): base (message) {}} public class Customized {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

//Вывод:

InvalidAgeException: к сожалению, возраст должен быть больше 18
в Customized.validate (возраст Int32) в F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: строка 18
в Customized.Main (String [] args) в F: Учебник по C # C # ProgramsConsoleApp1ConsoleApp1Program.cs: строка 23
Блок ловли сейчас выполняется.

Наконец, пример блока

с использованием системного общедоступного класса FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} finally {Console .WriteLine ('Наконец блок выполнен')} Console.WriteLine ('Блок захвата выполнен')}}

//Вывод:

System.DivideByZeroException: попытка разделить на ноль.
в FinalExecption.Main (String [] args) в F: Учебник по C #C # ProgramsConsoleApp1ConsoleApp1Program.cs: строка 10
Наконец блок выполняется
Блок захвата выполнен

Подпись исключения системы

[SerializableAttribute] [ComVisibleAttribute (true)] открытый класс SystemException: Exception

Конструкторы системных исключений

Строитель Описание
SystemException () Он используется для инициализации нового экземпляра класса SystemException.
SystemException

(SerializationInfo, StreamingContext)

Он используется для инициализации нового экземпляра класса SystemException с сериализованными данными.
SystemException (строка) Он используется для инициализации нового экземпляра класса SystemException с указанным сообщением об ошибке.
SystemException (строка, исключение) Он используется для инициализации нового экземпляра класса SystemException с указанным сообщением об ошибке и ссылкой на внутреннее исключение, которое является причиной этого исключения.

Свойства исключения системы

Свойство Описание
Данные Он используется для получения набора пар ключ / значение, которые предоставляют дополнительную определяемую пользователем информацию об исключении.
HelpLink Он используется для получения или установки ссылки на файл справки, связанный с этим исключением.
HResult Он используется для получения или установки HRESULT, закодированного числового значения, которое присваивается определенному исключению.
InnerException Он используется для получения экземпляра Exception, вызвавшего текущее исключение.
Сообщение Он используется для получения сообщения, описывающего текущее исключение.
Источник Он используется для получения или установки имени приложения, вызывающего ошибку.
Трассировки стека Он используется для получения строкового представления непосредственных кадров в стеке вызовов.
TargetSite Он используется для получения метода, который вызывает текущее исключение.

Системные методы исключения

Методы Описание
Равно (объект) Он используется для проверки того, равен ли указанный объект текущему объекту или нет.
Завершить () Он используется для освобождения ресурсов и выполнения операций очистки.
GetBaseException () Он используется для получения исключения root.
GetHashCode () Он используется для получения хэш-кода.
GetObjectData

(SerializationInfo, StreamingContext)

Используется для получения данных об объекте.
GetType () Он используется для получения типа среды выполнения текущего экземпляра.
MemberwiseClone () Он используется для создания мелкой копии текущего объекта.
Нанизывать() Он используется для создания и возврата строкового представления текущего исключения.

Пример системного исключения

с использованием системного пространства имен CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

//Вывод:

System.IndexOutOfRangeException: индекс находился за пределами массива.
в CSharpProgram.SystemExceptionExample.Main (String [] args) в F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: строка 11

Синхронизация

Синхронизация может быть методом, который позволяет только 1 потоку получить доступ к ресурсу в течение определенного времени. Ни один альтернативный поток не будет прерван, пока назначенный поток не завершит свою задачу.

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

Пример без синхронизации

используя Систему с использованием класса System.Threading Edureka {public void PrintTable () {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

//Вывод:

один
один
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

Пример с синхронизацией

с использованием системы с использованием класса System.Threading Edureka {public void PrintTable () {lock (this) {for (int i = 1 i<= 10 i++) { Thread.Sleep(100) Console.WriteLine(i) } } } } class Program { public static void Main(string[] args) { Edureka p = new Edureka() Thread t1 = new Thread(new ThreadStart(p.PrintTable)) Thread t2 = new Thread(new ThreadStart(p.PrintTable)) t1.Start() t2.Start() } } 

//Вывод:

один
2
3
4
5
6
7
8
9
10
один
2
3
4
5
6
7
8
9
10

Новые возможности

Microsoft добавила множество новейших функций в язык C #, некоторые из них упомянуты ниже.

C # 6.0

  • Использование статической директивы
  • Фильтры исключений
  • Ожидание в блоках catch / finally
  • Автоматические инициализаторы свойств
  • Значения по умолчанию для свойств только для получения
  • Члены с телом выражения
  • Нулевой пропагатор
  • Строчная интерполяция
  • Имя оператора
  • Инициализатор словаря
  • Компилятор как услуга (Roslyn)

C # 7.0

  • Сопоставление с образцом
  • Кортежи
  • Деконструкция
  • Локальные функции
  • Разделитель цифр
  • Двоичные литералы
  • Ref возвращается и местные жители
  • Конструкторы и финализаторы с телом Expression
  • Геттеры и сеттеры с телом выражений
  • Выходные переменные
  • Обобщенные асинхронные возвращаемые типы

C # 7.1

  • Асинхронный основной
  • Выражения по умолчанию

Вопросы для собеседования на основе C #

Важные вопросы для интервью, основанные на языке программирования C #, можно найти в этом обновленном .

На этом мы подошли к концу статьи «Учебник по C #». Надеюсь, вы поняли важность структур данных, синтаксиса, функциональности и операций, выполняемых с их помощью. Теперь, когда вы поняли основы программирования на C # с помощью этогоУчебник по C #, посмотрите обучение предоставлено от Edureka для многих технологий, таких как Java, весна и многоболее того, надежная компания онлайн-обучения с сетью из более чем 250 000 довольных учащихся по всему миру получила вопрос к нам? Упомяните об этом в разделе комментариев этого блога «Учебник по C #», и мы свяжемся с вами как можно скорее.