Урок за C #: Основите, които трябва да овладеете C #



Тази статия за урока по C # ще ви помогне с подробни познания по основите на C #, заедно с примери в реално време за по-добро разбиране.

C # е универсален и здрав език за програмиране, разработен от Microsoft Corporation през 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

java преобразуване двойно в int

Google за най-новата версия на Visual Studio и изтеглете Инсталирай файл във вашата локална система и след това бягай инсталационния файл като администратор.

Стъпка 2: Изберете .NET Desktop Development Package

След като стартирате инсталатора, Visual Studio Editor ще бъде успешно изтеглен във вашата локална система. По-късно на екрана на работния плот ще се покаже диалогов прозорец, който ще поиска конкретен пакет имате нужда от вашата система. Тук трябва да изберете .NET разработка на работния плот пакет.

Стъпка 3: Задайте C # Environment

След като вашите пакети за .NET разработка се изтеглят, тогава на екрана ви ще се покаже друг диалогов прозорец, който ще поиска средата за разработка, която търсите. Ето, трябва изберете средата за C #.

Стъпка 4: Създайте първия си проект

След като средата е настроена, всички сте готови. Стартирайте Visual Studio и изберете създайте нов проект опция в показания диалогов прозорец.

Ще бъдете пренасочени към следващия диалогов прозорец и там трябва да изберете библиотека на класовете като .NET Standard както е показано по-долу.

В следващия диалогов прозорец ще бъдете помолени да го направите Конфигурирайте вашия проект . Конфигурирайте го и вече сте в редактора. Напишете първата си програма и бягай то. Резултатът ще бъде успешно показан на Командния ред.

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

// Изход:

Нека изпълним първата си програма C #.

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

След като изпълнихме първата си програма C #, нека разберем нейната структура в детайли. Една проста програма на C # има следните части.

използване на системно пространство от имена ConsoleApplication1 {публичен клас Edureka {публична статична невалидна Main (низ [] аргументи) {Console.WriteLine ('Добре дошли в Edureka !, Честито обучение ..!'}}}}

// Изход:

Добре дошли в Edureka !, Честито обучение ..!

  • клас: клас може да се определи като a ключова дума който се използва за дефиниране на клас в програмата C #.
  • Edureka: Това е името на Клас. Класът често се разглежда като план, който съхранява членовете и методите, свързани с класа.
  • Основна: По принцип е първичен метод от цялата програма C #, Той действа като шлюз за управлението за влизане в програмата. Той се изпълнява, преди да се изпълни друг метод на програмата.
  • празно: Този сегмент от кода е определен за тип връщане на метода. Това може да бъде всеки тип данни, различен от void. Void означава, че методът няма данни, които се връщат от него.
  • статични: Това е ключова дума което казва, че декларираните членове на данни са статични и на декларираните членове е разпределена специална памет.
  • String [] аргументи: Той прилича на аргументите от командния ред, които използваме в нашата програма. Докато изпълняваме нашата програма, ние основно предаваме някои аргументи, които ще бъдат приети от програмата поради това изявление.
  • System.Console.WriteLine („Добре дошли в Edureka !, Честито обучение ..!“) Тук, Система е пространство от имена. Конзолатае, че категорията очертанав System namespace. The WriteLine () е, честатичнитехникана конзолатакатегория, която се използва за записванетекста на конзолата.

Сега нека научим типовете данни, налични в C #.

Типове данни

Типовете данни в C # са разделени на три категории, описани по-долу.

Типове данни за стойност

The Типове данни за стойност се намират в System.ValueType Библиотека и винаги са готови за директен достъп и променливите могат да бъдат директно присвоени на определена стойност. По-нататък типовете данни за стойността са класифицирани в два типа, както е показано по-долу:

  • Предварително определени типове данни
  • Дефинирани от потребителя типове данни

Предварително определени типове данни: Това са тези, които обикновено използваме в ежедневното си програмиране. Тези типове данни са предварително дефинирани от разработчиците на езици и се поддържат готови за използване от програмистите.

Пример:

int, float, char, short double и др

Дефинирани от потребителя типове данни: Има ситуации, в които може да се наложи да съхраняваме различни стойности от Типове данни в една единствена променлива. В тези случаи Предварително определени типове данни не са достатъчно. Дефинирано от потребителя Типовете данни са като персонализируеми типове данни за потребителя.

Пример: Структура, Enum

Тип данни Обхват на разпределената памет Размер на паметта
подписан знак -128 до 127 1 байт
неподписан знак 0 до 127 1 байт
char -128 до 127 1 байт
подписано кратко -32,768 до 32,767 2 байта
неподписано кратко 0 до 65 535 2 байта
къс -32,768 до 32,767 2 байта
подписано междун -2,147,483,648 до -2,147,483,647 4 байта
неподписан int 0 до 4 294 967 295 4 байта
инт -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, (7-цифрена точност) 4 байта
двойно 5.0 * 10-324 - 1.7 * 10308, (15-цифрена точност) 8 байта
десетична -7,9 * 10-28 - 7,9 * 1028, (28-цифрена точност) 16 байта


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

Типът на указателя е прост тип данни. Функционалността му е напълно подобна на указателите в C. Те са предназначени да съхраняват адреса на друг указател.

float * ptr

Референтни типове данни

Името се обяснява само по себе си. The Референтни типове данни всъщност не съхраняват променливите, вместо това те съхраняват референтната стойност на тази конкретна променлива. С други думи, те съхраняват адреса на действителната променлива.

Референтните променливи са класифицирани в три различни типа, както е посочено по-долу:

  • Тип обект

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

object abc abc = 50 // това се нарича бокс
  • Динамичен тип

Променливите на Dynamic Type са предназначени да съхраняват почти всички видове стойности. Той се нарича динамичен тип, тъй като проверката на типа на стойностите се извършва по време на изпълнение

динамичен x = 10
  • Тип на низ

Типът низ е наличен в System.String клас. String Type е предназначен за съхраняване на низ литерали. String Literals се съхраняват в две форми вдве форми

    • цитиран
    • @ цитирано.
String S = 'Edureka'
  • The @ цитирано низ литерал изглежда
@ 'Edureka'

Сега нека разберем променливите.

Променливи

Променливите са имената, разпределени за местоположението в паметта, които съхраняват определени данни, дадени от потребителя, и че данните са лесно достъпни с помощта на името на променливата. В C # има пет типа променливи

Тип Пример
Нула Нулеви данни
Булев Вярно и невярно
Цяло число Int, Char, Byte, Short, Long
Плувка Float и Double
Десетична Десетична

Пример:

int a, b double x float p char abc

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

  • Променливата може да включва азбуки, цифри и долни черти.
  • Името на променлива може да започва само с азбука или само с долна черта.
  • Променливите не могат да започват с цифра или специален символ.
  • Пропуските между името на променливата не са позволени.
  • Резервираните ключови думи са ограничени да се използват като имена на променливи.

Оператори

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

  • Аритметични оператори
  • Релационни оператори
  • Логически оператори
  • Побитови оператори
  • Оператори за присвояване

Аритметични оператори

Оператор Пример Описание
+ A + B Добавя два операнда
- А - Б Субстракти два операнда
* A * B Умножава два операнда
/ A / B Разделя два операнда
% A% B Останалата част от Две операнди
++ A ++ Инкрементна операция
- ДА СЕ- Операция за намаляване

Релационни оператори

Оператор Пример Описание
== A == B Вярно, ако и двата операнда са равни, Else False
! = A! = B Вярно е, че ако и двата операнда не са равни, Else False
> A> B Вярно, ако A е по-голямо, друго невярно
< ДА СЕ Вярно, ако B е по-голямо, друго невярно
> = A> = B Вярно е, че ако A е по-голямо или равно, друго False
<= ДА СЕ<= B Вярно е, че id B е по-равно, друго False

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

Оператор Пример Описание
&& A&& B Вярно, ако и двата операнда са верни, Else False
|| A || Б. Вярно, ако един от операндите е истина, Else False
! А! Б. Обръща логическото състояние на операнда

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

ДА СЕ Б. A & B A | Б. A ^ B
един един един един 0
един 0 0 един един
0 един 0 един един
0 0 0 0 0
Оператор Пример Описание
~ (~ A) Операторът за допълване на двоичен човек е единствен и има ефект на „обръщане“ на битове.
<< ДА СЕ<<2 Двоичен ляв оператор за смяна. Стойността на левия операнд се премества наляво от броя на битовете, посочен от десния операнд.
>> A >> 2 Двоичен десен оператор за смяна. Стойността на левия операнд се премества надясно с броя битове, посочени от десния операнд.

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

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

Цикли

ДА СЕ цикъл израз се използва за многократно изпълнение на блок от изявления, докато се изпълни определено условие. Езикът C # се състои от следните контури.

  • За Loop
  • Докато Loop
  • Направете докато цикъла

За Loop

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

Синтаксис

за (увеличаване / намаляване на условието за инициализация) {// кодов сегмент}

Диаграма:

Пример:

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

// Изход:

един
2
3
4
5

Докато Loop

The Докато цикъл се използва за изпълнение на кодов сегмент за няколко броя пъти, докато се изпълни конкретно условие.

Синтаксис

while (условие) {// код за изпълнение}

Диаграма:

Пример:

използване на Системни пространства от имена 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

Направете докато цикъла

Цикълът while е напълно подобен на цикъла While Loop, но единствената разлика е, че условието е поставено в края на цикъла. Следователно, цикълът се изпълнява поне веднъж.

Синтаксис

do {// код за изпълнение} докато (условие)

Диаграма:

Пример:

използване на системно пространство от имена 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, продукт) i ++} докато (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. Изказване „Ако е друго“
  3. Вложен оператор If-else
  4. If-Else Ако стълба
  5. Извлечение за превключване

Ако изявление

Сингълът ако израз на език C # се използва за изпълнение на кода, ако условието е вярно. Нарича се още еднопосочна декларация за подбор.

Синтаксис

if (boolean-expression) {// изрази се изпълняват, ако boolean-expression е true}

Диаграма:

Пример:

използване на системно пространство от имена Условен {клас IfStatement {публична статична невалидна Главна (низ [] аргументи) {int номер = 2 if (число<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// Изход:

2 е по-малко от 5
Този оператор винаги се изпълнява.

Изказване „Ако е друго“

The ако-друго израз на език C се използва за изпълнение на кода, ако условието е вярно или невярно. Нарича се още двупосочна декларация за подбор.

Синтаксис

if (boolean-expression) {// изрази се изпълняват, ако boolean-expression е true} else {// изрази се изпълняват, ако boolean-expression е false}

Диаграма:

Пример:

използване на системно пространство от имена Условен {клас IfElseStatement {публична статична невалидна Главна (низ [] аргументи) {int номер = 12 if (число<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 (вложен израз-2) {// код за изпълнение } else {// код за изпълнение}}

Диаграма:

Пример:

използване на системно пространство от имена Условен {клас Вложен {публична статична невалидна Главна (низ [] аргументи) {int първи = 7, втори = -23, трети = 13 if (първи & gt втори) {if (първи

// Изход:

13 е най-големият

В противен случай стълба

The ако-друго-ако израз се използва за изпълнение на един код от множество условия. Нарича се още декларация за решение с много пътеки. Това е верига от оператори if..else, в които всеки оператор if е свързан с else if израз и last ще бъде оператор else.

Синтаксис

if (условие1) {// код, който трябва да се изпълни, ако условието1 е вярно} иначе ако (условие2) {// кодът трябва да се изпълни, ако условието2 е вярно} иначе ако (условие3) {// кодът да се изпълни, ако условието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 is 20 ') else Console.WriteLine (' i не присъства ')}}

// Изход:

аз съм на 20

Извлечение за превключване

Превключване изявление действа като заместител на дълга стълба, ако не е така, която се използва за тестване на списък от случаи. Оператор на превключвател съдържа един или повече етикети на регистъра, които се тестват спрямо израза на превключвателя. Когато изразът съвпада с случай, тогава свързаните изрази с този случай ще бъдат изпълнени.

Синтаксис

превключвател (променлива / израз) {case value1: // Изявления, изпълнени, ако израз (или променлива) = value1 break case value2: // Изявления, изпълнени, ако израз (или променлива) = value1 break ... ... ... .. ... ... ... по подразбиране: // Изявления, изпълнявани, ако няма съвпадение на случай}

Диаграма:

Пример:

използване на системно пространство от имена Условен {клас SwitchCase {публична статична невалидна Главна (низ [] аргументи) {char ch Console.WriteLine ('Въведете азбука') ch = Превключвател Convert.ToChar (Console.ReadLine ()) (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') case case 'i': Console.WriteLine ('Vowel') break case 'o': Console.WriteLine ('Vowel') break case 'u': Console.WriteLine ('Vowel') break default: Console.WriteLine ('Not a vowel') break}}}}

// Изход:

Въведете азбука
е
Гласна буква

Струни

Струна Типът данни е член на System.String Клас. Той е в състояние да съхранява данни от тип знаци. Можем да извършваме различни операции на Стингс катоконкатенация, сравнение, получаване на поднизове, търсене, изрязване, подмяна и много други.

Аналогията на String и string

В C # Струна и низ са еквивалентни. Думата низ е a ключова дума и действа като System.String клас. Можем да използваме всяка от версиите, за да декларираме низове.

Синтаксис:

string s1 = 'Edureka' // създаване на низ с ключова дума 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, String) Използва се за сравняване на два посочени String обекта.
Concat (низ, низ) Обединете два посочени екземпляра на String.
Съдържа (низ) Връща стойност, посочваща посочен подниз
Копиране (низ) Използва се за създаване на нов екземпляр на String със същата стойност
CopyTo (Int, Char [], Int, Int) Копира символи от определена позиция
Равен (String, String) Определя, че два String обекта имат еднаква стойност.
Формат (низ, обект) Заменете един или повече форматирани елементи в определен низ
IndexOf (String) Отчита нулевия индекс на първото появяване
Вмъкване (Int32, низ) Връща нов низ, в който низ е вмъкнат в индекс.
IsInterned (String) Показва, че този низ е във форма за нормализация на Unicode C.
IsNullOrEmpty (низ) Показва, че посоченият низ е нула или празен низ.
IsNullOrWhiteSpace (низ) Използва се, за да посочи дали определен низ е нула, празен,
Присъединете се (String, String []) Използва се за обединяване на всички елементи на низ масив
LastIndexOf (Char) Отчита нулевата позиция на индекса на последния символ
LastIndexOfAny (Char []) Отчита нулевата позиция на индекса на последния символ
Премахване (Int32) Връща нов низ, в който всички знаци
Замяна (низ, низ) Връща нов низ, в който всички появявания на низ
Сплит (Char []) Използва се за разделяне на низ на поднизове
Започва с (низ) Използва се за проверка дали началото на този низ
Подниз (Int32) Използва се за извличане на подниз от този екземпляр.
ToCharArray () Копира символите в този екземпляр в масив Unicode.
ToString () Използва се за връщане на екземпляра на String.
Подрязване () Подрязва низа


Масиви

Подобно на други езици за програмиране, C # има масиви. Масивите са простите структури от данни, които са предназначени да съхраняват един и същ тип данни на елементи в съседна памет.

C # поддържа следните типове масиви.

  • Едномерен масив
  • Многомерен масив
  • Назъбен масив

Едномерен масив

Едномерният масив съхранява елементи под формата на един единствен ред.

Синтаксис

int [] arr = нов 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
петдесет

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

Многоизмерният масив съхранява елементи под формата на множество измерения като матрица и куб и т.н.

Синтаксис

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() } } } 

// Изход:

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

Назъбен масив

Назъбеният масив е просто масив от масиви.

Пример:

използване на системно пространство от имена ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, нов int [] {2,4}, нов int [] {3, 6}, нов int [] {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() } } } 

// Изход:

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

Колекции

Колекцията може просто да се разглежда като група обекти, събрани заедно, така че да се приложат някои функции върху събраните данни. Операциите, които след като евентуално могат да извършат върху колекция, са,

  • съхранява обект
  • актуализира обект
  • изтриване на обект
  • извличане на обект
  • обект за търсене и
  • сортиране на обект

Видове колекции

Има три различни възможности за работа с колекции. Трите пространства от имена са посочени по-долу:

  • System.Collections.Generic класове
  • System.Collections класове
  • System.Collections.Concurrent класове

System.Collections.Generic Class има следните разновидности на класове:

  • Списък
  • Стек
  • Опашка
  • LinkedList
  • HashSet
  • SortedSet
  • Речник
  • Сортиран речник
  • SortedList

The System.Collections класовете се считат за наследени класове. те включват следните класове.

  • ArrayList
  • Стек
  • Опашка
  • Hashtable

The System.Collections.Concurrent класовеnamespace предоставя класове за безопасни за нишки операции. Сега множество нишки няма да създадат проблем за достъп до елементите на колекцията. наличните класове в това са,

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentStack
  • ConcurrentQueue
  • ConcurrentD Dictionary
  • Прегради
  • Прегради
  • OrderablePartitioner

Списък

The списък се разглежда като структура от данни, налична в System.Collection.Generics пространство от имена. Той може да съхранява и извлича елементи. Списъкът може да съхранява дублиращи се елементи.

Пример:

използване на System с помощта на 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 (name)}}}

// Изход:

Сандхия
Арун
Прашант
Киран

Hash Set

C # HashSetкатегорията често е свикналамагазин,за вкъщииличете компоненти. Тонесъхранява дубликаткомпоненти.е настоятелнода използвам HashSet категорияакоимашсъхранявамединствено отличителен компоненти . това е намерен в System.Collections.Generic пространство от имена.

Пример:

използване на System с помощта на System.Collections.Generic публичен клас Edureka {публична статична невалидна Main (низ [] аргументи) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Pujari') имена. Добавете ('Imran') имена. Добавете ('karan') foreach (име на var в имена) {Console.WriteLine (име)}}}

// Изход:

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

Сортиран комплект

C # SortedSetклас често са свикналимагазин, Премахване или Прочети елементи . Той поддържа възходящ ред инесъхранява дубликателементи.това е бързода използвате SortedSetкатегорияакоимашсъхранявам отличителен компоненти и поддържат възходящ ред.това енамерен в System.Collections.Generic пространство от имена.

Пример:

използване на System с помощта на System.Collections.Generic публичен клас Edureka {публична статична невалидна Main (низ [] args) {var names = new SortedSet () names.Add ('Sanjay') names.Add ('Anuradha') names.Add ( 'Praveen') имена. Добавете ('Ravi') имена. Добавете ('Kajol') foreach (име на вариация в имена) {Console.WriteLine (име)}}}

// Изход:

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

Стек

The стек е проста колекция, която следва РЪБ, КРАЙ или първо в последната процедура за излизане, докато обработваме съхраняваните в нея елементи.

Пример:

използване на System с помощта на System.Collections.Generic публичен клас Edureka {публична статична невалидна Main (низ [] аргументи) {Имена на стека = нови имена на Stack (). Имена на Push ('Chandan'). Имена на Push ('Pooja'). 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 ('After Pop, Peek element:' + names.Peek ())}}

// Изход:

кумар
Раджеш
Джеймс
Пуджа
Чандън
Елемент на надникване: кумар
Поп: кумар
След Pop, Peek елемент: Rajesh

Опашка

Опашката е напълно подобна на Stack, но единствената разлика е, че Queue следва FIFO или принцип първи и първи изход, докато обработваме съхраняваните в него елементи.

Пример:

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

// Изход:

Сружан
Праджат
Джон
Жестоко
Ден
Peek елемент: Srujan
Dequeue: Srujan
След Dequeue, Peek елемент: Prajat

Свързан списък

Свързаният списък е колекция от динамична памет. Елементите в свързания списък се съхраняват чрез достъп до паметта от купчината и съхраняване на елементите в непрекъснат ред чрез свързване на техните адреси.

Пример:

използване на System с помощта на System.Collections.Generic публичен клас Edureka {публична статична невалидна Main (низ [] аргументи) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') names.AddLast ('jay') names.AddFirst ('sai') foreach (var name in names) {Console.WriteLine (name)}}}

// Изход:

сай
Обвързани
Арун
Пракаш
сойка

Речник

Речник категорияизползваидеяна hashtable. Той съхранява стойности напредпоставкатана ключа. Съдържаотличителенключовеединствено. Отпомощтаот ключ,просто ще го направимтърсене илиотнемат елементи.това енамерен в System.Collections.Generic пространство от имена.

Пример:

използване на System с помощта на System.Collections.Generic публичен клас Edureka {public static void Main (низ [] аргументи) {Имена на речника = нови имена на Dictionary (). Добавете ('1', 'Shiva') имена. Добавете ('2', 'Prasad') имена. Добавете имена ('3', 'Preetam'). Добавете имена ('4', 'Roy'). Добавете ('5', 'Akash') foreach (KeyValuePair kv в имена) {Конзола. WriteLine (kv.Key + '' + kv.Value)}}}

// Изход:

1 Шива
2 Прасад
3 Претам
4 Рой
5Акаш

Сортиран речник

The Сортиран речник категорияизползвадизайнна hashtable. Той съхранява стойности наидеятана ключа. Съдържаотличителенключове и поддържа възходящ ред наидеятана ключа. Отпомощтаот ключ,просто ще го направимтърсене илиотнемат елементи.това енамерен в System.Collections.Generic пространство от имена.

Пример:

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

// Изход:

1 Шива
2 Прасад
3 Претам
4 Рой
5Акаш

Сортиран списък

The SortedList еanмасив от двойки ключ / стойност. Той съхранява стойности напредпоставкатана ключа. Сортираният списъккатегориясъдържаотличителенключове и поддържа възходящ ред напредпоставкатана ключа. Отпомощтаот ключ,ние сме в състояние простотърсене или премахванеелементи.това енамерен в System.Collections.Generic пространство от имена.

Пример:

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

// Изход:

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

Структура

Структурата е дефиниран от потребителя тип данни, предназначен да съхранява множество елементи от различния тип данни. Структурата се декларира с помощта на ключовата дума структура.

Пример:

използване на System struct Books {публичен низ заглавие публичен низ автор публичен низ тема публичен int book_id} публичен клас Edureka {публична статична невалидна Главна (низ [] аргументи) {Книги Книга1 Книги Книга2 Book1.title = 'C # Програмиране' Book1.author = ' Рамчандра Кумар 'Book1.subject =' Урок за програмиране на C ++ 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Урок за фактуриране на телеком 'Book2.book_id = 18674900 Console.WriteLine 'Книга 1 заглавие: {0}', Book1.title) Console.WriteLine ('Книга 1 Автор: {0}', Book1.author) Console.WriteLine ('Книга 1 тема: {0}', Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Book 2 title: {0}', Book2.title) Console.WriteLine ('Книга 2 Автор: {0}', Book2.author) Console.WriteLine ('Предмет на книга 2: {0}', Book2.subject) Console.WriteLine ('Book 2id_id: {0}', Book2.book_id) Console.ReadKey ()}}

// Изход:

Заглавие на книга 1: Програмиране на C #
Книга 1 Автор: Рамчандра Кумар
Тема на книга 1: Урок по програмиране на C ++
Книга 1 book_id: 95908978
Заглавие на книга 2: Фактуриране за телеком
Книга 2 Автор: Каран
Тема на книга 2: Урок за фактуриране на телеком
Книга 2 book_id: 18674900

Функции

Функцията се дефинира като блок с код на основния код. Функцията се използва за изпълнение на изрази, посочени в кодовия блок. Функцията се състои от следните компоненти.

  • Име на функцията: Това е отличително име, което се използва за извикване на функция.
  • Тип връщане: Той указва типа на данните за връщаната стойност на функцията.
  • Тяло: Той съдържа изпълними инструкции.
  • Спецификатор на достъп: Той определя достъпността на функциите в приложението.
  • Параметри: Това е списък с аргументи, които можем да предадем на функцията по време на разговора.

Синтаксис

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

Пример:

използване на системно пространство от имена FunctionExample {клас Edureka {публичен низ Покажи (низово съобщение) {Console.WriteLine ('Вътрешна функция за показване') връщане съобщение} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('To Edureka') Console.WriteLine ('Welcome' + съобщение)}}}

// Изход:

Функция за вътрешно шоу
Добре дошли в Edureka

Функциите могат да се изпълняват по 3 различни начина:

  • Обаждане по стойност
  • Обаждане по справка
  • Изходен параметър

Обаждане по стойност

В C #, стойност -Тип параметрисаче минаватрепликас първоначална стойност зафункция вместосправка. Тонепромянапървата стойност. Anсъздадено изменениев преминастойност неВъзрастконкретната стойност.в рамките наслед пример,ние имамеминестойност презнаобадете се.

Пример:

използване на System namespace CallByValue {class Edureka {public void Show (int val) {val * = val Console.WriteLine ('The value inside the show function' + val)} static void Main (string [] args) {int val = 50 Програма Edureka = нова програма Edureka () Console.WriteLine ('Стойност преди извикване на функцията' + val). Показване (val) Console.WriteLine ('Стойност след извикване на функцията' + val)}}}

// Изход:

Стойност преди извикване на функцията 50
Стойността във функцията за показване 2500
Стойност след извикване на функцията 50

Обаждане по справка

В метода Call by Reference,да се реф ключова дума за предаване на аргумента като референтен тип. Той предава препратката на аргументи към функцията, а не копие на оригиналната стойност. Промените в предадените стойности са постоянни и промяна първоначалната стойност на променливата.

Пример:

използване на системно пространство от имена CallByReference {клас Edureka {публична невалидна Покажи (ref int val) {val * = val Console.WriteLine ('Стойността вътре в функцията за показване' + val)} static void Main (string [] args) {int val = 50 програма Edureka = нова програма Edureka () Console.WriteLine ('Стойност преди извикване на функцията' + val). Показване (ref val) Console.WriteLine ('Стойност след извикване на функцията' + val)}}}

// Изход:

Стойност преди извикване на функцията 50
Стойността във функцията за показване 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) програма.Показване (out val) Console.WriteLine ('Стойност след получаване на променливата out' + val)}}}

// Изход:

Стойност преди предаване на променлива 50

Стойностслед получаване на изходната променлива 25

Сега да преминем към обектно-ориентирано програмиране

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

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

Характеристики на обектно-ориентираното програмиране:

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

Обектно-ориентираните парадигми в C # са както следва

Изброяване в C #

Enum или също се нарича като изброяване в C # се използва за съхраняване на константи, без да се налага да ги променяте по време на цялото изпълнение на програма C #. Тосе използва за съхраняване на набор от посочени константи като сезон, дни, месец, размер и т.н.

Пример:

използване на System public class 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

Обектно-ориентиран подход на програмиране

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

Капсулиране

Капсулиране е метод за комбиниране на методи заедно със своите членове на данни.

Пример:

използване на системно пространство от имена 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 (' Област: {0} ', GetArea ())}} клас ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r.width = 35 r.Display () Console.ReadLine ()}}}

// Изход:

Дължина: 50
Ширина: 35
Площ: 1750

Абстракция

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

Пример:

с използване на System public abstract class Shape {public abstract void draw ()} public class Rectangle: Shape {public override void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Shape {public override void draw () {Console.WriteLine ('drawing circle ...')}} публичен клас TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

// Изход:

изчертаване на правоъгълник ...
кръг за рисуване ...

Интерфейс

The интерфейс е напълно подобен на Абстракция. Функционалността на интерфейса е да скрие маловажните данни от потребителя и да му предостави единствените важни данни, от които се нуждае.

Пример:

с използване на системния публичен интерфейс Drawable {void draw ()} публичен клас Правоъгълник: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('рисуващ кръг ...')}} публичен клас TestInterface {публична статична празнота Main () {Drawable dd = нов правоъгълник () d.draw () d = нов кръг () d.draw ()}}

// Изход:

изчертаване на правоъгълник ...
кръг за рисуване ...

Полиморфизъм

Полиморфизъме комбинацията от „Поли“ + „Морфи“ което означава много форми. Това е гръцка дума. Това означава, че кодовият сегмент може да приеме множество форми. Имаме два вида полиморфизъм.

  • Компилирайте времевия полиморфизъм
  • Полиморфизъм по време на изпълнение

Пример:

с използване на System public class Animal {public string color = 'white'} public class Dog: Animal {public string color = 'black'} public class TestSeated {public static void Main () {Animal d = new Dog () Console.WriteLine ( г.цвет)}}

// Изход:

бял

Наследяване

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

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

използване на системно пространство от имена RectangleApplication {клас Rectangle {защитена двойна дължина защитена двойна ширина public Rectangle (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ('Length: {0}', length) Console.WriteLine ('Width: {0}', width) Console.WriteLine ('Area: {0}', GetArea ())}} class Tabletop: Rectangle {private публична двойна цена на маса (двойна l, двойна w): основа (l, w) {} публична двойна GetCost () {двойна цена = GetArea () * 70 цена на връщане} публична невалидна дисплей () {base.Display () конзола .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

Пример за многостепенно наследяване

използване на системно пространство от имена InheritanceApplication {клас 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 = нов Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Обща площ: {0}', Rect.getArea ()) Console.WriteLine ('Общо цена на боя: $ {0} ', Rect.getCost (област)) Console.ReadKey ()}}}

// Изход:

Обща площ: 35
Общи разходи за боя: $ 2450

Претоварване

Претоварването е ситуация, при която има двама или членове, декларирани с едно и също име. Претоварването е възможно и когато декларираме два или повече метода със същото име. Нека проверим примери и за двете.

Претоварване на членовете

Пример:

с използване на System public class 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 { публична статична празнота Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

// Изход:

35
60

Метод Претоварване

Пример:

с използване на System public class Edureka {public static int add (int a, int b) {return a + b} public static float add (float a, float b) {return a + b}} public class TestMemberOverloading {public static void Main ( ) {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12.4f, 21.3f))}}

// Изход:

35
33,699997

Замяна

Заменянето е ситуация, при която дъщерният клас дефинира същия метод, който родителят също дефинира. Нека разберем това чрез малък пример.

Пример:

използване на System public class Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} public class Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} public class Overriding {public static void Main () {Dog d = new Dog () d.eat ()}}

// Изход:

Ядене на храна

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

The пространство от имена основно се използва за обработка на множество класове, присъстващи в програмата. Пространството от имена се предлага по различни начини.

  • System.Console: Ето, Система става пространството от имена
  • За достъп до класа на пространство от имена трябва да използваме именапространство.класово име.
  • Можем да използваме използвайки ключова дума също.

Пример:

използване на Система, използвайки Първо, използвайки Второ пространство от имена Първо {публичен клас Edureka {public void sayWelcome () {Console.WriteLine ('Добре дошли в Edureka')}}} пространство от имена Второ {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 ()}}

// Изход:

Добре дошли в Edureka
Честито обучение

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

The файлови операции налични в C # са както следва:

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

FileMode

The FileMode е изброител, който дефинира множество методи за отваряне на файлове. Членовете на FileMode Enumerator са описани както следва:

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

FileAccess

FileAccess Преброителят се използва за получаване на достъп до определен файл. Той има следните членове.

  • Прочети
  • Пишете
  • Чети пиши

FileShare

The Споделяне на файлове Преброителят се използва за споделяне на определен файл. Той има следните членове.

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

Събития

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

Издател

ДА СЕ издател съдържа дефиницията на събитието и делегата. The делегат на събитие асоциацията е дефинирана в този обект. A издател class обект извиква събитието и то се уведомява за други обекти.

Абонат

ДА СЕ абонат приема събитието и предоставя манипулатор на събития. The делегат в класа на издателя извиква метода / събитието манипулатор от абонатния клас.

Пример:

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

// Изход:

Добре дошли в Edureka. Честито обучение

Дженерици

Дженерици е концепция за осигуряване на членовете и методите на даден клас със запазващи места в Време за изпълнение. Можем да дефинираме 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
З.

Делегати

The Делегирайте действа като препратка към метода. По принцип е същото като a указател на функция в 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 номер} публичен статичен int getNumber () {номер на връщане} публична статична невалидна Главна (низ [] аргументи) {Калкулатор c1 = нов калкулатор (добавяне) Калкулатор c2 = нов калкулатор (mul) c1 (20) Console.WriteLine ('След калкулатор един делегат, новият номер е: '+ getNumber ()) c2 (3) Console.WriteLine (' След делегат два калкулатора, новият номер е: '+ getNumber ())}}

// Изход:

След един делегат на калкулатора, новият номер е: 45
След делегиране на калкулатор две, новото число е: 135

Отражение

Отражението е необходимо, за да се получат метаданните по време на изпълнение. Референцията е достъпна на System.Reflection пространство от имена. Той изисква следните класове за изпълнение.

  • Тип
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Модул
  • Сглобяване
  • AssemblyName
  • Показалец

Тип клас

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

Въведете Properties

Списък на важните свойства на класовете Type е споменат по-долу.

Имот Описание
Сглобяване Получава събранието за този тип.
AssemblyQualifiedName Получава квалифицирано име на събранието за този тип.
Атрибути Получава атрибутите, свързани с типа.
BaseType Получава основния или родителския тип.
Пълно име Получава напълно квалифицираното име на типа.
IsAbstract се използва за проверка дали типът е Абстрактен.
IsArray се използва за проверка дали типът е Array.
IsClass се използва за проверка дали типът е Class.
IsEnum се използва за проверка дали типът е Enum.
IsInterface се използва за проверка дали типът е Interface.
IsNested се използва за проверка дали типът е вложен.
IsPrimitive се използва за проверка дали типът е примитивен.
IsPointer се използва за проверка дали типът е Pointer.
IsNotPublic се използва за проверка дали типът не е Public.
IsPublic се използва за проверка дали типът е Public.
IsSeated се използва за проверка дали типът е запечатан.
IsSerializable се използва за проверка дали типът е сериализуем.
Тип член се използва за проверка дали типът е тип член от вложен тип.
Модул Получава модула от типа.
Име Получава името на типа.
Пространство от имена Получава пространството от имена на типа.
Имот Описание
GetConstructors () Връща всички публични конструктори за Тип.
GetConstructors (BindingFlags) Връща всички конструктори за Тип с посочени BindingFlags.
GetFields () Връща всички публични полета за Тип.
GetFields (BindingFlags) Връща всички публични конструктори за Тип с посочени BindingFlags.
GetMembers () Връща всички публични членове за типа.
GetMembers (BindingFlags) Връща всички членове за Тип с посочени BindingFlags.
GetMethods () Връща всички публични методи за Тип.
GetMethods (BindingFlags) Връща всички методи за Тип с посочени BindingFlags.
GetProperties () Връща всички публични свойства за Тип.
GetProperties (BindingFlags) Връща всички свойства за Тип с посочени BindingFlags.
GetType () Получава текущия тип.
GetType (низ) Получава типа за даденото име.

Примери за отражение:

Вземете Type

Пример:

с използване на System public class GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

// Изход:

System.Int32

Вземете събрание

Пример:

използване на System с помощта на System.Reflection публичен клас GetAssembly {публична статична невалидна Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

// Изход:

System.Private.CoreLib, Версия = 4.0.0.0, Култура = неутрална, PublicKeyToken = 7cec85d7bea7798e

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

Пример:

използване на System с използване на System.Reflection публичен клас PrintType {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 с помощта на System.Reflection публичен клас PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Конструктори от {0} type ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c in ci) {Console.WriteLine (c)}}}

// Изход:

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

Методи за печат

Пример:

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

// Изход:

Методи на System.String тип ...
Замяна на System.String (System.String, System.String)
System.String [] Разделяне (Char, System.StringSplitOptions)
System.String [] Разделяне (Char, Int32, System.StringSplitOptions)
System.String [] Разделяне (Char [])
System.String [] Разделяне (Char [], Int32)
System.String [] Разделяне (Char [], System.StringSplitOptions)
System.String [] Разделяне (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 [] Разделяне (System.String [], Int32, System.StringSplitOptions) ......

Полета за печат

Пример:

използване на System с помощта на System.Reflection публичен клас PrintFields {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Fields of {0} type ...', t) FieldInfo [] ci = t .GetFields (BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic) foreach (FieldInfo f in ci) {Console.WriteLine (f)}}}

// Изход:

Полета от тип System.String ...
System.String Empty

Сега нека преминем към някои разширени концепции за програмиране на C #

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

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

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

  • Ламбда изрази
  • Анонимни методи

Пример:

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

// Изход:

Квадрат: 625

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

The анонимен метод осигурява същата функционалност като a ламбда израз, освен че ни позволява да игнорираме списъка с параметри.

Пример:

използване на системно пространство от имена AnonymousMethods {class Program {public delegate void AnonymousFun () static void Main (string [] args) {AnonymousFun fun = delegate () {Console.WriteLine ('This is anonymous function')} fun ()}}}

// Изход:

Това е анонимна функция

Multi-Threading

Многопоточността е процес, при който се създават множество нишки и се задават за различни задачи. това спестява време, като изпълнява няколко задания едновременно. Класът на многопоточност е наличен в System.Thading пространство от имена.

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

The System.Thading пространство от имена съдържа класове и интерфейси за улесняване на многопоточност. Той осигурява класове за синхронизиране на ресурса на нишката. Списък на често използваните класове е даден по-долу:

  • Тема
  • Mutex
  • Таймер
  • Монитор
  • Семафор
  • ThreadLocal
  • ThreadPool
  • Летлив

Процес и конец

Процесът всъщност е и приложение и се счита за a тежка категория съставна част. От друга страна, нишката е една единствена модул от цялото приложение. то е лек в сравнение с процеса

LifeCycle на нишка

Всяка нишка има жизнен цикъл. Жизненият цикъл на нишката е дефиниран в клас System.Threading.Thread. Следват етапите в жизнения цикъл на която и да е нишка.

  • Без стартиране
  • Изпълним (готов за работа)
  • Бягане
  • Не се изпълнява
  • Мъртъв

Класът Thread предоставя следните свойства и методи, както следва.

Тема свойства

Имот Описание
CurrentThread връща екземпляра на текущо работеща нишка.
IsAlive проверява дали текущата нишка е жива или не.
IsBackground За да получите / зададете стойност на текущата нишка е във фонов режим или не.
ManagedThreadId се използва за получаване на уникалния идентификатор за управляваната в момента нишка.
Име се използва за получаване или задаване на името на текущата нишка.
Приоритет се използва за получаване или задаване на приоритета на текущата нишка.
ThreadState се използва за връщане на стойност, представляваща състоянието на нишката.

Методи на резбата

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

Пример за основна нишка

използване на System с използване на System.Threading публичен клас Edureka {публична статична невалидна Main (низ [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

// Изход:

MainThread

Обработка на изключения

The изключение е грешка, хвърлена от програмата по време на нейното изпълнение. Извършваме обработка на изключения, за да направим изключението на нашата програма безплатно.

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

В C # използваме 4 ключови думи за изпълнение обработка на изключения:

  • опитвам
  • улов
  • накрая и
  • хвърляне
Пример:
използване на системния публичен клас EdurekExample {публична статична празнота Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine ('Това съобщение е от блок за улов')}}

// Изход:

System.DivideByZeroException: Опит за разделяне с нула.
в ExExaEdurekample.Main (String [] args) в F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ред 10
Това съобщение е от блок за хващане

Пример за персонализирано изключение

използване на системния публичен клас InvalidAgeException: Изключение {публично InvalidAgeException (съобщение на низ): база (съобщение) {}} публичен клас Персонализиран {статична невалидна проверка (int възраст) {if (възраст<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 # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ред 23
Catch block се изпълнява сега.

какви са функциите в sql

Накрая пример за блок

използване на системния публичен клас FinalExecption {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 ('Най-накрая блокът се изпълнява')} Console.WriteLine ('Блокът за улов се изпълнява')}}

// Изход:

System.DivideByZeroException: Опит за разделяне с нула.
в FinalExecption.Main (String [] args) в F: C # TutorialC # ProgramsConsoleApp1ConsoleApp1Program.cs: ред 10
Накрая блокът се изпълнява
Блокът за улов се изпълнява

Подпис на системно изключение

[SerializableAttribute] [ComVisibleAttribute (вярно)] публичен клас SystemException: Изключение

Конструктори на системни изключения

Строител Описание
SystemException () Използва се за инициализиране на нов екземпляр на класа SystemException.
SystemException

(SerializationInfo, StreamingContext)

Използва се за инициализиране на нов екземпляр на клас SystemException със сериализирани данни.
SystemException (низ) Използва се за инициализиране на нов екземпляр на клас SystemException с посочено съобщение за грешка.
SystemException (низ, изключение) Използва се за инициализиране на нов екземпляр на клас SystemException с посочено съобщение за грешка и препратка към вътрешното изключение, което е причината за това изключение.

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

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

Методи за системно изключение

Методи Описание
Е равно (обект) Използва се за проверка дали посоченият обект е равен на текущия обект или не.
Финализиране () Използва се за освобождаване на ресурси и извършване на операции по почистване.
GetBaseException () Използва се за получаване на root изключение.
GetHashCode () Използва се за получаване на хеш код.
GetObjectData

(SerializationInfo, StreamingContext)

Използва се за получаване на обектни данни.
GetType () Използва се за получаване на типа на изпълнение на текущия екземпляр.
MemberwiseClone () Използва се за създаване на плитко копие на текущия обект.
ToString () Използва се за създаване и връщане на низово представяне на текущото изключение.

Пример за системно изключение

използване на системно пространство от имена CSharpProgram {клас 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 с помощта на 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 чрез 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 #, някои от тях са посочени по-долу.

С # 6.0

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

С # 7.0

  • Съвпадащ модел
  • Кортежи
  • Деконструкция
  • Локални функции
  • Цифров разделител
  • Двоични литерали
  • Ref се връща и местните
  • Експресивни конструктори и финализатори
  • Експресивни гетери и сетери
  • Външни променливи
  • Генерализирани асинхронни типове връщане

C # 7.1

  • Async main
  • Изрази по подразбиране

Въпроси за интервю въз основа на C #

Важните въпроси за интервю, основани на програмен език C #, могат да бъдат намерени в това актуализирано .

С това стигнахме до края на тази статия за „Урок за C #“. Надявам се, че сте разбрали значението на структурите на данни, синтаксиса, функционалността и операциите, изпълнявани с тях. Сега, след като разбрахте основите на програмирането в C # чрез товаУрок за C #, вижте осигурено обучение от Edureka за много технологии като Java, Пролет и многооще, доверена компания за онлайн обучение с мрежа от над 250 000 доволни обучаващи се, разпространени по целия свят, получи въпрос за нас? Споменете го в раздела за коментари в този блог „Урок за C #“ и ние ще се свържем с вас възможно най-скоро.