Водич за Ц #: Основе које требате да савладате Ц #



Овај чланак о водичу за Ц # помоћи ће вам са детаљним знањем о основама Ц #, заједно са примерима у стварном времену за боље разумевање.

Ц # је вишенаменски и робустан програмски језик који је развила Мицрософт Цорпоратион 2000. године као смртоносна конкуренција Јави. Најпопуларнији је и доминирајући програмски језик што се тиче како веб развоја, тако и развоја десктоп апликација.

У овом водичу за Ц # научићемо следеће концепте.





Основе Ц #

Увод у програмски језик Ц #

Раних 90-их Јава је била водећи програмски језик за веб развој, развој десктоп апликација и многа друга поља. Мицрософт је желео да изађе са конкурентом са многим напредним функцијама које Јава могу оставити далеко иза себе.



C#-Tutorial-hejlsberg_bio

Било је то 2000. године, Андерс Хејлсберг и његов Мицрософт тим дошли су на идеју о Ц # популарно званом Ц-Схарп. Ову иницијативу одобрила је Међународна организација за стандарде (ГЛАВНИ) и Европског удружења произвођача рачунара (ЕЦМА). и коначно, Ц # улази у свет развоја софтвера.

Карактеристике програмског језика Ц #



  • Објектно оријентисани програмски језик

Приступ објектно оријентисаног програмирања је оно што Ц # чини оштрим програмом најприкладнијим и једноставним за развој и одржавање програмског језика.

  • Типе-Сафе језик

Значење Типе-Сафе је да ће компајлеру бити омогућен приступ само меморијској локацији која има дозволу за извршавање. Ова функција побољшава сигурност кода на експоненцијални ниво.

  • Компатибилност

Карактеристика интероперабилности чини Ц # довољно способним да учини све што је изворно за Ц ++ на ефикаснији начин који може надмашити сам Ц ++.

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

Ц # омогућава приступ вишеструким бројевима уграђених библиотека које пружају унапред програмиране функционалности како би се смањило време проведено у процесу развоја.

  • Скалабилно и надоградиво

Ц # је дизајниран да буде супериорнији међу осталим програмским језицима. Стога је увек отворен за ажурирања и својим карактеристикама се одржава изузетно скалабилним.

  • Оријентисано на компоненте

Програмери у Мицрософту су користили приступ заснован на компонентама за развој Ц #. Ово је најзаступљенија развојна методологија за одржавање Ц # високо скалабилног и ажурираног.

  • Струцтуред Лангуаге

Приступ структурираном програмирању је пожељнији током животног циклуса развоја софтвера, јер постаје лако развити компајлирање и применити софтвер у поређењу са приступом програмирања оријентисаном на процедуру.

  • Брзо

Ц # програмирање је брже у компајлирању и извршавању у поређењу са Ц ++ и другим програмским језицима.

Инсталација

Доказано је да Мицрософт Висуал Студио је најбољи у класи Едитор за програмирање на Ц #. Инсталираћемо и подесити Мицрософт Висуал Студио за извршавање наших Ц # програма пратећи доле наведене кораке:

Корак 1 : Преузмите Мицрософт Висуал Студио

Гоогле за најновија верзија Висуал Студија и преузмите инсталирај датотеку у ваш локални систем, а затим трцати инсталацијску датотеку као ан администратор.

Корак 2: Изаберите .НЕТ Десктоп развојни пакет

Једном када покренете програм за инсталирање, Висуал Студио Едитор ће се успешно преузети у ваш локални систем, а касније ће се на екрану радне површине приказати дијалошки оквир у којем се тражи да одређени пакет требате у свом систему. Овде треба да изаберете .НЕТ Десктоп развој пакет.

Корак 3: Подесите окружење Ц #

Једном када пакети за .НЕТ развој се преузму, тада ће се на вашем екрану приказати други дијалошки оквир у којем се тражи развојно окружење које тражите. Ево, мораш изаберите окружење за Ц #.

Корак 4: Креирајте свој први пројекат

Једном када је окружење постављено, сви сте спремни. Покрените Висуал Студио и изаберите креирајте нови пројекат опција у приказаном дијалошком оквиру.

Бићете преусмерени на следећи дијалошки оквир и тамо треба да изаберете Библиотеку предавања као .НЕТ Стандард како је приказано испод.

У следећем дијалошком оквиру од вас ће се тражити Конфигуришите свој пројекат . Конфигуришите га и сада сте у уређивачу. Напишите свој први програм и трцати то. Излаз ће бити успешно приказан на Командна линија.

користећи системску класу Едурека {статиц воид Маин (стринг [] аргс) {Цонсоле.ВритеЛине ('Добро дошли у Едурека !, Срећно учење ..!)}}

// излаз:

Извршимо наш први Ц # програм.

Структура програма Ц #

Сад кад смо извели свој први програм Ц #, хајде да детаљно схватимо његову структуру. Једноставан Ц # програм има следеће делове.

користећи системски простор имена ЦонсолеАпплицатион1 {јавна класа Едурека {јавна статичка празнина Маин (стринг [] аргс) {Цонсоле.ВритеЛине ('Добро дошли у Едурека !, Срећно учење ..!)}}}

// излаз:

Добродошли у Едурека !, Срећно учење ..!

  • класа: класа се генерално може дефинисати као а кључна реч која се користи за дефинисање класе у програму Ц #.
  • Едурека: То је име Класа. Предавање се често сматра планом који чува чланове и методе повезане са предавањем.
  • Главни: У основи је примарна метода целог програма Ц #, делује као пролаз за контролу која улази у програм. Извршава се пре него што се изврши било који други метод програма.
  • празнина: Овај сегмент кода означен је са тип повратка методе. То може бити било који тип података осим воид. Воид значи да метода нема података који се враћају из ње.
  • статиц: Ово је кључна реч што каже да су декларисани чланови података статични и да је намењена меморија додељена декларисаним члановима.
  • Стринг [] аргс: Подсећа на аргументе командне линије које користимо у нашем програму. Док извршавамо наш програм, ми у основи преносимо неке аргументи, које ће програм прихватити због ове изјаве.
  • Систем.Цонсоле.ВритеЛине („Добро дошли у Едуреку !, Срећно учење ..!“) Ево, Систем је простор имена. Конзолада ли је наведена категоријау Систем намеспаце. Тхе ВритеЛине () да ли је тостатичкитехникаконзолекатегорија која је запослена за записивањетекст на конзоли.

Сада, научимо типове података доступне у Ц #.

Типови података

Типови података у Ц # су подељени у три категорије које су описане у наставку.

шта су токени у јави

Вредности типова података

Тхе Вредности типова података налазе се у Систем.ВалуеТипе Библиотека и увек су спремне за директан приступ, а променљиве се могу директно доделити одређеној вредности. Вредности података типа даље су класификоване у две врсте, као што је приказано у наставку:

  • Унапред дефинисани типови података
  • Кориснички дефинисани типови података

Унапред дефинисани типови података: То су они које обично користимо у свакодневном програмирању. Ови типови података су унапред дефинисани од стране програмера језика и они су спремни за употребу за програмере.

Пример:

инт, флоат, цхар, схорт доубле итд

Кориснички дефинисани типови података: Постоје ситуације у којима ћемо можда требати да сачувамо различите вредности из типова података у једну променљиву. У овим случајевима, Унапред дефинисани типови података нису само довољни. Кориснички дефинисано Типови података су попут прилагодљивих типова података за корисника.

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

Тип података Опсег додељене меморије Величина меморије
потписани цхар -128 до 127 1 бајт
непотписани цхар 0 до 127 1 бајт
цхар -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 бајта
непотписан инт 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 бајтова


Тип података показивача

Поинтер Типе је једноставан тип података. Његова функционалност је потпуно слична показивачима у Ц. Дизајнирани су за чување адресе другог показивача.

флоат * птр

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

Назив је саморазумљив. Тхе Референтни типови података заправо не чувају променљиве, већ складиште референтну вредност на ту одређену променљиву. Другим речима, они чувају адресу стварне променљиве.

Референтне променљиве су класификоване у три различите врсте као што је наведено у наставку:

  • Тип објекта

Тип објекта објекта доступан је у Систем.Објецт Класа.Објекатврстеможе битидодељенавредностиостале врсте,референцаврсте, унапред дефинисано, кориснички дефинисановрсте. Али презадатаквредности, то захтева тип конверзија.

објект абц абц = 50 // ово се зове бокс
  • Динамиц Типе

Варијабле Динамиц Типе су дизајниране за складиштење готово свих врста вредности. Назван је Динамички тип јер се провера типова вредности одвија у току извођења

динамички к = 10
  • Стринг Типе

Стринг Типе је доступан у Систем.Стринг класа. Стринг Типе је дизајниран за чување стринг литерала. Стринг Литералс се чувају у два обликадва облика

    • цитиран
    • @ цитирано.
Стринг С = 'Едурека'
  • Тхе @ цитирано стринг литерал изгледа
@ 'Едурека'

Сада да разумемо променљиве.

Променљиве

Променљиве су имена додељена за меморијску локацију која чувају одређене податке које је дао корисник и до којих је лако доћи помоћу имена променљиве. У Ц # је доступно пет врста променљивих

Тип Пример
Нула Нулл дата
Боолеан Тачно и нетачно
Цео број Инт, Цхар, Бите, Схорт, Лонг
Пловак Флоат и Доубле
Децималан Децималан

Пример:

инт а, б дупло к флоат п цхар абц

Правила која треба поштовати за декларацију променљивих у Ц #

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

Оператори

Оператор се може дефинисати као посебан симбол који објашњава рачунару да изврши одређену математичку логичку операцију над скупом променљивих. Ц # укључује низ оператора који су поменути као у наставку.

  • Аритметички оператори
  • Релациони оператори
  • Логички оператори
  • Бит-ови оператори
  • Оператори доделе

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

Оператор Пример Опис
+ А + Б Додаје два операнда
- А - Б Подлоге два оперда
* А * Б. Множи два операнда
/ А / Б Дели два операнда
% А% Б Остатак Два оперна
++ А ++ Операција повећања
- ДО- Операција смањења

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

Оператор Пример Опис
== А == Б. Тачно, ако су оба операнда једнака, Елсе Фалсе
! = А! = Б. Тачно, ако оба операнда нису једнака, Елсе Фалсе
> А> Б. Тачно, ако је А веће, друго нетачно
< ДО Тачно, ако је Б веће, друго нетачно
> = А> = Б. Тачно, ако је А веће или једнако, нетачно
<= ДО<= B Тачно, ид Б је једнако једнак, у супротном нетачан

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

Оператор Пример Опис
&& А && Б. Тачно, ако су оба операнда тачна, Елсе Фалсе
|| А || Б. Тачно, ако је један од операнда тачан, Елсе Фалсе
! А! Б. Обрне логичко стање операнда

Бит-ови оператори

ДО Б. А & Б А | Б. А ^ Б.
један један један један 0
један 0 0 један један
0 један 0 један један
0 0 0 0 0
Оператор Пример Опис
~ (~ А) Бинарни оператер комплемента је унарни и има ефекат „превртања“ битова.
<< ДО<<2 Бинарни оператер леве смене. Вредност левог операнда помера се лево за број битова наведен десним операндом.
>> А >> 2 Бинарни оператор десне смене. Вредност левог операнда помера се удесно за број битова назначених десним операндом.

Оператори доделе

Оператор Пример Опис
= А = Б + Ц. А = Б + Ц, Б + Ц је додељен А
+ = А + = Б. А = А + Б, А + Б је додељен А
- = А - = Б. А = А-Б, А-Б је додељен А
* = А - = Б. А = А * Б, А * Б је додељен А
/ = А / = Б. А = А / Б, А / Б је додељен А
% = А% = Б. А = А% Б, А% Б је додељен А
<<= ДО<<= 2 Леви смена и оператер доделе
>> = А >> = 2 Оператер десне смене и додељивања
& = А & = 2 Бит-ов и оператор додељивања
^ = А ^ = 2 Битно ексклузивни и оператор додељивања
| = А! = 2 Битно укључени и оператор додељивања

Лоопс

ДО петља статемент се користи за извршавање блока наредби више пута док се не испуни одређени услов. Језик Ц # састоји се од следећих петљи.

  • Фор Лооп
  • Док петља
  • До Вхиле Лооп

Фор Лооп

Тхе фор лооп користи се за извршавање одређеног сегмента кода више пута док се не испуни задати услов.

Синтакса

за (прираст / смањење) услова иницијализације {// сегмент кода}

Дијаграм тока:

Пример:

коришћење системске јавне класе ФорЕкампле {публиц статиц воид Маин (стринг [] аргс) {фор (инт и = 1 и<= 5 i++) { Console.WriteLine(i) } } } 

// излаз:

један
2
3
4
5

Док петља

Тхе Док петља користи се за извршавање сегмента кода више пута док се не испуни одређени услов.

Синтакса

вхиле (цондитион) {// код који треба извршити}

Дијаграм тока:

Пример:

користећи системске петље простора имена {класа Програм {статиц воид Маин (стринг [] аргс) {инт к = 5 вхиле (к<= 10) { Console.WriteLine('The value of a: {0}', x) x++ } Console.ReadLine() } } } 

// излаз:

Вредност а: 5
Вредност а: 6
Вредност а: 7
Вредност а: 8
Вредност а: 9
Вредност а: 10

До Вхиле Лооп

Петља До вхиле је потпуно слична вхиле Лооп, али једина разлика је у томе што је услов постављен на крај петље. Стога се петља извршава барем једном.

Синтакса

уради {// код који треба извршити} вхиле (услов)

Дијаграм тока:

Пример:

користећи Систем намеспаце Едурека {цласс ДоВхилеЛооп {публиц статиц воид Маин (стринг [] аргс) {инт и = 1, н = 5, продуцт до {продуцт = н * и Цонсоле.ВритеЛине ('{0} * {1} = { 2} ', н, и, производ) и ++} док (и<= 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

Условни

Условне изјаве користе се за извршење изјава или група од изјаве на основу неког услова. Ако је стање је истина тада Изјаве Ц # извршавају се у супротном следећи изјава биће извршено.

Различите врсте условних изјава у језику Ц ++ су следеће:

  1. Ако изјава
  2. Изјава ако-друго
  3. Угнездена изјава Иф-елсе
  4. Иф-Елсе Иф мердевине
  5. Изјава о пребацивању

Ако изјава

Сингл ако наредба на језику Ц # користи се за извршавање кода ако је услов тачан. Такође се назива једносмерна изјава о избору.

Синтакса

иф (боолеан-екпрессион) {// наредбе извршене ако је боолеан-израз тачно}

Дијаграм тока:

Пример:

користећи системски простор назива Цондитионал {цласс ИфСтатемент {публиц статиц воид Маин (стринг [] аргс) {инт нумбер = 2 иф (број<5) { Console.WriteLine('{0} is less than 5', number) } Console.WriteLine('This statement is always executed.') } } } 

// излаз:

2 је мање од 5
Ова изјава се увек извршава.

Изјава ако-друго

Тхе ако друго наредба на језику Ц користи се за извршавање кода ако је услов тачан или нетачан. Такође се назива двосмерна изјава о избору.

Синтакса

иф (боолеан-екпрессион) {// наредбе извршене ако је боолеан-израз тачно} елсе {// изрази извршене ако је боолеан-израз нетачно}

Дијаграм тока:

Пример:

користећи Систем намеспаце Цондитионал {цласс ИфЕлсеСтатемент {публиц статиц воид Маин (стринг [] аргс) {инт нумбер = 12 иф (број<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
Ова изјава се увек извршава.

Угнездена изјава Иф-елсе

Угнездено ако друго наредба се користи када програм захтева више од једног пробног израза. Такође се назива вишесмерна изјава о одабиру. Када се низ одлука укључи у изјаву, користимо ако друго изјава у угнежђеној форми.

Синтакса

иф (боолеан-екпрессион) {иф (угнежђени-израз-1) {// код који треба извршити} елсе {// код који треба извршити}} елсе {иф (угнијежђени-израз-2) {// код који треба извршити } елсе {// код који треба извршити}}

Дијаграм тока:

Пример:

употреба Систем намеспаце Цондитионал {цласс Нестед {публиц статиц воид Маин (стринг [] аргс) {инт фирст = 7, сецонд = -23, тхирд = 13 иф (фирст & гт сецонд) {иф (фирст

// излаз:

13 је највећи

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

Тхе ако-иначе-ако наредба се користи за извршавање једног кода из више услова. Такође се назива изјава о одлуци са више стаза. То је ланац наредби иф..елсе у којем је свака наредба иф повезана са елсе иф наредба и ласт била би наредба елсе.

Синтакса

иф (цондитион1) {// код који треба извршити ако је цондитион1 тачно} елсе иф (цондитион2) {// код који треба извршити ако је цондитион2 труе} елсе иф (цондитион3) {// код који треба извршити ако је цондитион3 труе} ... елсе {// код који треба извршити ако су сви услови нетачни}

Дијаграм тока:

Пример:

користећи системску класу Едурека {публиц статиц воид Маин (Стринг [] аргс) {инт и = 20 иф (и == 10) Цонсоле.ВритеЛине ('и ис 10') елсе иф (и == 15) Цонсоле.ВритеЛине (' и је 15 ') елсе иф (и == 20) Цонсоле.ВритеЛине (' ја је 20 ') елсе Цонсоле.ВритеЛине (' и није присутан ')}}

// излаз:

имам 20 година

Изјава о пребацивању

Пребаци Изјава делује као замена за дугу лествицу ако не, која се користи за тестирање листе случајева. Наредба прекидача садржи једну или више ознака великих и малих слова које се тестирају према изразу прекидача. Када се израз подудара са случајем, тада ће се извршити повезани изрази с тим падежом.

Синтакса

прекидач (променљива / израз) {цасе валуе1: // Изводи се ако је израз (или променљива) = валуе1 бреак цасе валуе2: // Изводи се ако је израз (или променљива) = валуе1 бреак ... ... ... .. . ... ... дефаулт: // Изводи се извршавају ако се ниједан случај не подудара}

Дијаграм тока:

Пример:

користећи системски простор назива Цондитионал {цласс СвитцхЦасе {публиц статиц воид Маин (стринг [] аргс) {цхар цх Цонсоле.ВритеЛине ('Ентер а алпхабет') цх = Цонверт.ТоЦхар (Цонсоле.РеадЛине ()) прекидач (Цхар.ТоЛовер (цх )) {цасе 'а': Цонсоле.ВритеЛине ('Вовел') бреак цасе 'е': Цонсоле.ВритеЛине ('Вовел') бреак цасе 'и': Цонсоле.ВритеЛине ('Вовел') бреак цасе 'о': Цонсоле.ВритеЛине ('Вовел') цасе цасе 'у': Цонсоле.ВритеЛине ('Вовел') бреак дефаулт: Цонсоле.ВритеЛине ('Није самогласник') бреак}}}}

// излаз:

Унесите абецеду
је
Самогласник

Жице

Низ Тип података је члан Систем.Стринг Класа. Способан је за чување података типа знакова. На Стинговима можемо изводити разне операције као што суспајање, упоређивање, добијање подниза, претрага, обрезивање, замена и још много тога.

Аналогија низа и жице

У Ц # Низ и низ су еквивалентне. Реч стринг је а кључна реч и делује као Систем.Стринг класа. Можемо користити било коју верзију за декларисање низова.

Синтакса:

стринг с1 = 'Едурека' // стварање низа помоћу кључне речи стринг Стринг с2 = 'Хаппи Леарнинг' // стварање низа помоћу класе Стринг

Пример:

помоћу системске јавне класе СтрингЕкампле {публиц статиц воид Маин (стринг [] аргс) {стринг с1 = 'Едурека' цхар [] цх = {'Ц', 'с', 'х', 'а', 'р', ' п ',' ',' Т ',' у ',' т ',' о ',' р ',' и ',' а ',' л '} стринг с2 = нев стринг (цх) Цонсоле.ВритеЛине ( с1) Цонсоле.ВритеЛине (с2)}}

// излаз:

Едурека
Водич за Цсхарп

Стринг методе у Ц #

Метод Опис
Клон () Користи се за враћање референце на ову инстанцу Стринга.
Упореди (Стринг, Стринг) Користи се за упоређивање два наведена Стринг објекта.
Цонцат (жица, жица) Спојите две наведене инстанце Стринга.
Садржи (низ) Врати вредност која указује на наведени подниз
Копија (низ) Користи се за креирање нове инстанце Стринга са истом вредношћу
ЦопиТо (Инт, Цхар [], Инт, Инт) Копира знакове са одређене позиције
Једнако (Стринг, Стринг) Утврђује да два Стринг објекта имају исту вредност.
Формат (низ, објекат) Замените једну или више ставки формата у наведеном низу
ИндекОф (Стринг) Извештава индекс заснован на нули првог појављивања
Уметни (Инт32, низ) Враћа нови низ у којем је низ уметнут у индекс.
ИсИнтернед (стринг) Означава да је овај низ у Уницоде нормализационом облику Ц.
ИсНуллОрЕмпти (Стринг) Означава да је наведени низ нулл или празан низ.
ИсНуллОрВхитеСпаце (низ) Користи се за означавање да ли је наведени низ празан,
Придружите се (Стринг, Стринг []) Користи се за спајање свих елемената низа низова
ЛастИндекОф (Цхар) Извештава положај индекса на основу нула последњег знака
ЛастИндекОфАни (Цхар []) Извештава положај индекса на основу нула последњег знака
Уклони (Инт32) Приказује нови низ у којем су сви знакови
Замени (низ, низ) Враћа нови низ у којем су све појаве низа
Сплит (Цхар []) Користи се за поделу низа на поднизове
СтартсВитх (низ) Користи се за проверу да ли је почетак овог низа
Подниз (Инт32) Користи се за преузимање под низа из ове инстанце.
ТоЦхарАрраи () Копира знакове у овом случају у низ Уницоде.
ТоСтринг () Користи се за враћање инстанце Стринг.
Обрежи () Тримс стринг


Низови

Слично осталим програмским језицима, и Ц # има низове. Низови су једноставне структуре података које су дизајниране за чување истог типа података елемената на суседној меморијској локацији.

Ц # подржава следеће типове низова.

  • Једнодимензионални низ
  • Мултидимензионални низ
  • Назубљени низ

Једнодимензионални низ

Једнодимензионални низ чува елементе у облику једног појединачног реда.

Синтакса

инт [] арр = нови инт [5] // стварање низа

Пример:

користећи системску јавну класу АрраиЕкампле {јавна статичка празнина Маин (стринг [] аргс) {инт [] арр = нев инт [5] арр [0] = 10 арр [1] = 20 арр [2] = 30 арр [3] = 40 арр [4] = 50 фор (инт и = 0 и 

// излаз:

10
двадесет
30
40
педесет

Мултидимензионални низ

Мултидимензионални низ чува елементе у облику више димензија попут матрице, коцке итд.

Синтакса

инт вал = а [2,3]

Пример:

користећи системски простор имена АрраиАпплицатион {цласс МиАрраи {статиц воид Маин (стринг [] аргс) {инт [,] а = нев инт [5, 2] {{0, 0}, {1, 2}, {2, 4}, {3, 6}, {4, 8}} инт и, ј за (и = 0 и<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

Назубљени низ

Јаггед Арраи је једноставно низ низова.

Пример:

користећи системски простор имена АрраиАпплицатион {цласс МиАрраи {статиц воид Маин (стринг [] аргс) {инт [] [] а = нев инт [] [] {нев инт [] {0,0}, нев инт [] {1,2 }, нови инт [] {2,4}, нови инт [] {3, 6}, нови инт [] {4, 8}} инт и, ј за (и = 0 и<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

Збирке

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

  • продавница објекта
  • упдате објект
  • избрисати објекат
  • дохватити објекат
  • објекат претраживања и
  • сортирати објекат

Врсте колекција

Постоје три различите могућности за рад са колекцијама. Три именска простора су наведена у наставку:

  • Систем.Цоллецтионс.Генериц класе
  • Систем.Цоллецтионс класе
  • Систем.Цоллецтионс.Цонцуррент класе

Класа Систем.Цоллецтионс.Генериц има следеће сорте класа:

  • Листа
  • Гомила
  • Ред чекања
  • ЛинкедЛист
  • ХасхСет
  • СортедСет
  • Речник
  • СортедДицтионари
  • СортедЛист

Тхе Систем.Цоллецтионс часови се сматрају наслеђеним часовима. укључују следеће класе.

  • Низ листа
  • Гомила
  • Ред чекања
  • Хасхтабле

Тхе Систем.Цоллецтионс.Цонцуррент класеименски простор пружа класе за операције сигурне у нитима. Сада више нити неће стварати проблем за приступ ставкама колекције. класе доступне у овоме су,

  • БлоцкингЦоллецтион
  • ЦонцуррентБаг
  • ЦонцуррентСтацк
  • ЦонцуррентКуеуе
  • ЦонцуррентДицтионари
  • Преграде
  • Преграде
  • ОрдераблеПартитионер

Листа

Тхе листа се сматра структуром података доступном у Систем.Цоллецтион.Генерицс простор имена. Може да складишти и преузима елементе. На листи је могуће чувати дупликате елемената.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {вар намес = нев Лист () намес.Адд ('Сандхиа') намес.Адд ('Арун') намес.Адд ( 'Прасхантх') намес.Адд ('Киран') фореацх (име имена у именима) {Цонсоле.ВритеЛине (наме)}}}

// излаз:

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

Хасх Сет

Ц # ХасхСеткатегорија је често навикнутапродавница,одузетииличитати компоненте. Тонечувати дупликаткомпоненте.то је подстакнутокористити ХасхСет категоријаакоимашза чувањеједино препознатљив компоненте . његово пронађено у Систем.Цоллецтионс.Генериц простору имена.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {вар намес = нев ХасхСет () намес.Адд ('Сунил') намес.Адд ('Амар') намес.Адд ( 'Пујари') намес.Адд ('Имран') намес.Адд ('каран') фореацх (вар име у именима) {Цонсоле.ВритеЛине (наме)}}}

// излаз:

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

Сортирани сет

Ц # СортедСеткласа су често навиклипродавница, уклонити или читати елементи . Одржава растући поредак инечувати дупликателементи.брзо једа бисте користили СортедСеткатегоријаакоимашза чување препознатљив компоненте и одржавати растући поредак.његовопронађено у Систем.Цоллецтионс.Генериц простору имена.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {вар намес = нев СортедСет () намес.Адд ('Сањаи') намес.Адд ('Анурадха') намес.Адд ( 'Правеен') имена.Додај ('Рави') имена.Додај ('Кајол') фореацх (име имена у именима) {Цонсоле.ВритеЛине (наме)}}}

// излаз:

Анурадха
Кајол
Правеен
Рави
Сањаи

Гомила

Тхе гомила је једноставна колекција која следи ИВИЦА или прво у последњем излазу током обраде елемената који су у њему сачувани.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {Имена стека = нова имена стека ().Пусх ('Цхандан') имена.Пусх ('Пооја') имена.Пусх ( 'Јамес') намес.Пусх ('Рајесх') намес.Пусх ('кумар') фореацх (име низа у именима) {Цонсоле.ВритеЛине (наме)} Цонсоле.ВритеЛине ('Пеек елемент:' + намес.Пеек () ) Цонсоле.ВритеЛине ('Поп:' + намес.Поп ()) Цонсоле.ВритеЛине ('Афтер Поп, Пеек елемент:' + намес.Пеек ())}}

// излаз:

кумар
Рајесх
Џејмс
Пооја
Цхандан
Пеек елемент: кумар
Поп: кумар
После попа, Пеек елемент: Рајесх

Ред чекања

Ред је потпуно сличан Стацк-у, али једина разлика је у томе што Ред следи ФИФО или принцип „први улаз и излаз“ током обраде елемената који се у њему чувају.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {Имена редова = нев Куеуе () намес.Енкуеуе ('Срујан') намес.Енкуеуе ('Прајат') намес.Енкуеуе ( 'Јохн') намес.Енкуеуе ('Рају') намес.Енкуеуе ('Хари') фореацх (име низа у именима) {Цонсоле.ВритеЛине (наме)} Цонсоле.ВритеЛине ('Пеек елемент:' + намес.Пеек () ) Цонсоле.ВритеЛине ('Декуеуе:' + намес.Декуеуе ()) Цонсоле.ВритеЛине ('Афтер Декуеуе, Пеек елемент:' + намес.Пеек ())}}

// излаз:

Срујан
Прајат
Јохн
Жестоко
Дан
Пеек елемент: Срујан
Декуеуе: Срујан
После Декуеуе, Пеек елемент: Прајат

Повезана листа

Повезана листа је збирка динамичке меморије. Елементи на повезаној листи се чувају приступањем меморији из гомиле и складиштењем елемената у континуираном редоследу повезивањем њихових адреса.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {вар намес = нев ЛинкедЛист () намес.АддЛаст ('Рајат') намес.АддЛаст ('Арун') намес.АддЛаст ( 'Пракасх') намес.АддЛаст ('јаи') намес.АддФирст ('саи') фореацх (име имена у именима) {Цонсоле.ВритеЛине (наме)}}}

// излаз:

саи
Боундс
Арун
Пракасх
јаи

Речник

Речник категоријакористиидејахасхтабле-а. Чува вредности напремисакључа. Садржипрепознатљивкључевиједино. Од странепомоћод кључа,ми ћемо једноставнопретрага илиодузимају елементе.његовопронађено у Систем.Цоллецтионс.Генериц простору имена.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {Имена речника = нова имена Рјечника (). Додати ('1', 'Схива') имена.Додати ('2', 'Прасад') имена.Додајте ('3', 'Преетам') имена.Додајте ('4', 'Рои') имена.Додајте ('5', 'Акасх') фореацх (КеиВалуеПаир кв у именима) {Конзола. Линија записивања (кв.Кеи + '' + кв.Валуе)}}}

// излаз:

1 Схива
2 Прасад
3 Преетам
4 Рои
5Акасх

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

Тхе СортедДицтионари категоријакористидизајнхасхтабле-а. Чува вредности наИдејакључа. Садржипрепознатљивтастери и одржава растући поредак наИдејакључа. Од странепомоћод кључа,ми ћемо једноставнопретрага илиодузимају елементе.његовопронађено у Систем.Цоллецтионс.Генериц простору имена.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {СортедДицтионари намес = нев СортедДицтионари () намес.Адд ('1', 'Арун') намес.Адд ('4', 'Висхал') имена.Додај ('5', 'Рамесх') имена.Додај ('3', 'Видиа') имена.Додај ('2', 'Паллави') фореацх (КеиВалуеПаир кв у именима) {Конзола. Линија записивања (кв.Кеи + '' + кв.Валуе)}}}

// излаз:

1 Схива
2 Прасад
3 Преетам
4 Рои
5Акасх

Сортед Лист

Тхе СортедЛист јеанниз парова кључ / вредност. Чува вредности напремисакључа. СортедЛисткатегоријасадржипрепознатљивтастери и одржава растући поредак напремисакључа. Од странепомоћод кључа,у могућности смо једноставнопретражите или уклонитеелементи.његовопронађена у Систем.Цоллецтионс.Генериц простор имена.

Пример:

користећи Систем користећи Систем.Цоллецтионс.Генериц јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {СортедДицтионари намес = нев СортедДицтионари () намес.Адд ('1', 'Арун') намес.Адд ('4', 'Висхал') имена.Додај ('5', 'Рамесх') имена.Додај ('3', 'Видиа') имена.Додај ('2', 'Паллави') фореацх (КеиВалуеПаир кв у именима) {Конзола. Линија записивања (кв.Кеи + '' + кв.Валуе)}}}

// излаз:

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

Структура

Структура је кориснички дефинисани тип података дизајниран за чување више елемената различитог типа података. Структура се декларише помоћу кључне речи струцт.

Пример:

користећи Систем струцт Боокс {наслов јавног стринга јавни стринг аутор јавни стринг предмет публиц инт боок_ид} јавна класа Едурека {публиц статиц воид Маин (стринг [] аргс) {Боокс Боок1 Боокс Боок2 Боок1.титле = 'Ц # Программинг' Боок1.аутхор = ' Рамцхандра Кумар 'Боок1.субјецт =' Водич за програмирање Ц ++ 'Боок1.боок_ид = 95908978 Боок2.титле =' Наплата телекома 'Боок2.аутхор =' Каран 'Боок2.субјецт =' Водич за обрачун телекома 'Боок2.боок_ид = 18674900 Цонсоле.ВритеЛине ( 'Наслов 1. књиге: {0}', Боок1.титле) Цонсоле.ВритеЛине ('Аутор 1. књиге: {0}', Боок1.аутхор) Цонсоле.ВритеЛине ('Наслов 1. књиге: {0}', Боок1.субјецт) Цонсоле.ВритеЛине ('Боок 1 боок_ид: {0}', Боок1.боок_ид) Цонсоле.ВритеЛине ('Боок 2 титле: {0}', Боок2.титле) Цонсоле.ВритеЛине ('Књига 2 Аутор: {0}', Боок2.аутхор) Цонсоле.ВритеЛине ('Предмет књиге 2: {0}', Боок2.субјецт) Цонсоле.ВритеЛине ('Боок 2ид_ид: {0}', Боок2.боок_ид) Цонсоле.РеадКеи ()}}

// излаз:

Наслов 1. књиге: Програмирање на Ц #
1. књига Аутор: Рамцхандра Кумар
Предмет књиге 1: Водич за програмирање Ц ++
Књига 1 боок_ид: 95908978
Наслов књиге 2: Наплата телекома
Књига 2 Аутор: Каран
Предмет књиге 2: Водич за обрачун телекома
Књига 2 боок_ид: 18674900

Функције

Функција је дефинисана као блок кода главног кода. Функција се користи за извршавање израза наведених у блоку кода. Функција се састоји од следећих компоненти.

  • Назив функције: То је препознатљиво име које се користи за позивање функције.
  • Тип повратка: Одређује тип података функције која враћа вредност.
  • Тело: Садржи извршне изјаве.
  • Спецификатор приступа: Одређује доступност функције у апликацији.
  • Параметри: То је листа аргумената које можемо проследити функцији током позива.

Синтакса

ФунцтионНаме () {// тело функције // ретурн статемент}

Пример:

користећи системски простор имена ФунцтионЕкампле {класа Едурека {јавни низ Прикажи (стринг порука) {Цонсоле.ВритеЛине ('Унутар функције приказивања') повратна порука} статиц воид Маин (стринг [] аргс) {Едурека програм = нев Едурека () стринг мессаге = програм .Схов ('То Едурека') Цонсоле.ВритеЛине ('Велцоме' + порука)}}}

// излаз:

Унутар функције приказа
Добродошли у Едуреку

Функције се могу извршити на 3 различита начина:

  • Позив по вредности
  • Позив путем референце
  • Оут Параметер

Позив по вредности

У Ц #, вредност -тип параметрисутај пролазрепликаод изворне вредности зафункција уместореференца. Тонемодификоватипрва вредност. Аннаправљен амандману прошаовредност неСтаростодређена вредност.унутарследећи пример,имамопроћивредност токомтхепозива.

Пример:

помоћу Систем намеспаце ЦаллБиВалуе {цласс Едурека {публиц воид Схов (инт вал) {вал * = вал Цонсоле.ВритеЛине ('Тхе валуе инсиде тхе схов фунцтион' + вал)} статиц воид Маин (стринг [] аргс) {инт вал = 50 Едурека програм = нови Едурека () Цонсоле.ВритеЛине ('Вредност пре позивања функције' + вал) програм.Схов (вал) Цонсоле.ВритеЛине ('Вредност након позивања функције' + вал)}}}

// излаз:

Вредност пре позивања функције 50
Вредност унутар функције схов 2500
Вредност након позива функције 50

Позив путем референце

У методу Цалл би Референце,до реф кључна реч за прослеђивање аргумента као референтног типа. Преноси референцу аргумената на функцију уместо на копију оригиналне вредности. Промене у усвојеним вредностима су трајне и модификовати оригинална вредност променљиве.

Пример:

користећи системски простор имена ЦаллБиРеференце {класа Едурека {јавна празнина Схов (реф инт вал) {вал * = вал Цонсоле.ВритеЛине ('Вредност унутар функције схов' + вал)} статиц воид Маин (стринг [] аргс) {инт вал = 50 Едурека програм = нови Едурека () Цонсоле.ВритеЛине ('Вредност пре позивања функције' + вал) програм.Схов (реф вал) Цонсоле.ВритеЛине ('Вредност након позивања функције' + вал)}}}

// излаз:

шта је упозорење у јавасцрипту

Вредност пре позивања функције 50
Вредност унутар функције схов 2500
Вредност након позива функције 2500

Оут Параметер

Параметар Оутпружа напоље кључна реч за прослеђивање аргумената као оут-типе. То је попут референтног типа, осим што не захтева да се променљива иницијализује пре прослеђивања. Морамо користити напоље кључна реч за прослеђивање аргумента као оут-типе. Корисно је када желимо да функција враћа више вредности.

Пример:

користећи системски простор ОутПараметер {цласс Едурека {публиц воид Схов (оут инт вал) {инт скуаре = 5 вал = скуаре вал * = вал} статиц воид Маин (стринг [] аргс) {инт вал = 50 Едурека програм = нев Едурека () Цонсоле.ВритеЛине ('Вредност пре издавања променљиве' + вал) програм.Схов (оут вал) Цонсоле.ВритеЛине ('Вредност након примања променљиве оут' + вал)}}}

// излаз:

Вредност пре него што се подели променљива 50

Вредностнакон примања оут променљиве 25

Пређимо сада на објектно оријентисано програмирање

Објектно оријентисано програмирање

Објектно оријентисано програмирање Системје програмска парадигма заснована на концепту предмета које садрже чланови података и методе везано за њих. Примарна сврха објектно оријентисаног програмирања је повећати флексибилност и одрживост програма

Карактеристике објектно оријентисаног програмирања:

  • Акценат је више на подацима него на процедури.
  • Програми су подељени на објекте што олакшава рад са њима.
  • Структуре података су дизајниране на такав начин да карактеришу објекте.
  • Функције које раде наподаци објекта смештају се заједно у структуру података.
  • Подаци су сакривени и не могу им приступити спољне функције без дозволе.
  • Комуникација између објеката може се одвијати уз помоћ функција.
  • Додавање нових података и функција постало је лако.
  • Следи приступ одоздо према горе у дизајну програма.

Објектно оријентисане парадигме у Ц # су следеће

Набрајање у Ц #

Енум или се такође назива и као набрајање у Ц # користи се за чување константних вредности без потребе да их мења током целог извршавања програма Ц #. Токористи се за чување скупа именованих константи као што су сезона, дани, месец, величина итд

Пример:

користећи Систем публиц цласс ЕнумЕкампле {публиц енум веек {понедељак, уторак, среда, четвртак, петак, субота, недеља} публиц статиц воид Маин () {инт к = (инт) веек.Мондаи инт и = (инт) веек.Фридаи Цонсоле .ВритеЛине ('Понедељак = {0}', к) Цонсоле.ВритеЛине ('Петак = {0}', и)}}

// излаз:

Понедељак = 0
Петак = 4

Приступ објектно оријентисаног програмирања

Објектно оријентисани стил програмирања може се постићи следењем доле прописаних метода.

Капсулација

Капсулација је метода за комбиновање методе заједно са својим чланови података.

Пример:

користећи Систем намеспаце Едурека {цласс Рецтангле {публиц доубле ленгтх публиц доубле видтх публиц доубле ГетАреа () {ретурн ленгтх * видтх} публиц воид Дисплаи () {Цонсоле.ВритеЛине ('Ленгтх: {0}', ленгтх) Цонсоле.ВритеЛине (' Ширина: {0} ', ширина) Цонсоле.ВритеЛине (' Област: {0} ', ГетАреа ())}} класа ЕкецутеРецтангле {статиц воид Маин (стринг [] аргс) {Рецтангле р = нев Рецтангле () р.ленгтх = 50 р.ширине = 35 р.Дисплаи () Цонсоле.РеадЛине ()}}}

// излаз:

Дужина: 50
Ширина: 35
Површина: 1750

Одвајање

Одвајање је метода за сакрити сложени део кодирања од корисника пружајући му само потребне информације које су му потребне.

Пример:

користећи системску јавну апстрактну класу Облик {јавна апстрактна воид драв ()} јавна класа Правоугаоник: Облик {јавна замјена воид драв () {Цонсоле.ВритеЛине ('цртање правоугаоника ...')}} јавна класа Круг: Облик {публиц оверриде воид цртање () {Цонсоле.ВритеЛине ('цртање круга ...')}} јавна класа ТестАбстрацт {јавна статичка празнина Маин () {Облик сс = нови Рецтангле () с.драв () с = нови круг () с.драв ()}}

// излаз:

цртање правоугаоника ...
цртање круга ...

Приступ

Тхе приступ је потпуно сличан Апстракцији. Функционалност интерфејса је да сакрије неважне податке од корисника и пружи му једине важне податке који су му потребни.

Пример:

користећи системски јавни интерфејс Дравабле {воид драв ()} јавна класа Правокутник: Дравабле {публиц воид драв () {Цонсоле.ВритеЛине ('цртање правоугаоника ...')}} круг јавне класе: Дравабле {публиц воид драв () {Цонсоле .ВритеЛине ('цртање круга ...')}} јавна класа ТестИнтерфаце {јавна статичка празнина Маин () {Дравабле дд = нови правоугаоник () д.драв () д = нови круг () д.драв ()}}

// излаз:

цртање правоугаоника ...
цртање круга ...

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

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

  • Саставите временски полиморфизам
  • Полиморфизам времена извођења

Пример:

помоћу системске јавне класе Анимал {публиц стринг цолор = 'вхите'} публиц цласс Дог: Анимал {публиц стринг цолор = 'блацк'} публиц цласс ТестСеатед {публиц статиц воид Маин () {Анимал д = нев Дог () Цонсоле.ВритеЛине ( д.боја)}}

// излаз:

бео

Наслеђивање

Наслеђивање је процес у којем један објекат аутоматски стиче сва својства и понашања свог надређеног објекта. Можете поново користити, проширити или модификовати атрибуте и понашања која су дефинисана у другој класи. зове се класа која наслеђује чланове друге класе изведена класа а класа чији су чланови наслеђени назива се база класа. Изведена класа је специјализована класа за основну класу.

Пример за наслеђивање једног нивоа

користећи системски простор имена РецтанглеАпплицатион {класа Рецтангле {заштићена двострука дужина заштићена двострука ширина публиц Рецтангле (доубле л, доубле в) {ленгтх = л видтх = в} публиц доубле ГетАреа () {ретурн ленгтх * видтх} публиц воид Дисплаи () {Цонсоле. ВритеЛине ('Ленгтх: {0}', ленгтх) Цонсоле.ВритеЛине ('Видтх: {0}', видтх) Цонсоле.ВритеЛине ('Ареа: {0}', ГетАреа ())}} цласс Таблетоп: Рецтангле {привате двоструки трошак јавни сто (двоструки л, двоструки ш): основни (д, ш) {} јавни двоструки ГетЦост () {двоструки трошак = ГетАреа () * 70 повратни трошак} јавна празнина Дисплаи () {басе.Дисплаи () Конзола .ВритеЛине ('Цост: {0}', ГетЦост ())}} цласс ЕкецутеРецтангле {статиц воид Маин (стринг [] аргс) {Таблетоп т = нев Таблетоп (4.5, 7.5) т.Дисплаи () Цонсоле.РеадЛине () }}}

// излаз:

Дужина: 4.5
Ширина: 7.5
Површина: 33,75
Цена: 2362,5

Пример наслеђивања на више нивоа

користећи системски простор имена ИнхеританцеАпплицатион {класа Облик {јавна празнина сетВидтх (инт в) {ширина = в} јавна празнина сетХеигхт (инт х) {висина = х} заштићена инт ширина заштићена инт висина} јавни интерфејс ПаинтЦост {инт гетЦост (инт ареа)} цласс Рецтангле: Схапе, ПаинтЦост {публиц инт гетАреа () {ретурн (ширина * висина)} публиц инт гетЦост (инт ареа) {ретурн ареа * 70}} цласс РецтанглеТестер {статиц воид Маин (стринг [] аргс) {Рецтангле Рецт = нев Рецтангле () инт ареа Рецт.сетВидтх (5) Рецт.сетХеигхт (7) ареа = Рецт.гетАреа () Цонсоле.ВритеЛине ('Укупна површина: {0}', Рецт.гетАреа ()) Цонсоле.ВритеЛине ('Укупно трошак боје: $ {0} ', Рецт.гетЦост (ареа)) Цонсоле.РеадКеи ()}}}

// излаз:

Укупна површина: 35
Укупни трошкови боје: 2450 УСД

Преоптерећење

Преоптерећење је ситуација када имамо двоје или чланова који се изјашњавају под истим именом. Преоптерећење је такође могуће када пријавимо две или више метода са истим именом. Проверимо примере оба.

Преоптерећење чланова

Пример:

користећи Систем публиц цласс Едурека {публиц статиц инт адд (инт а, инт б) {ретурн а + б} публиц статиц инт адд (инт а, инт б, инт ц) {ретурн а + б + ц}} публиц цласс ТестМемберОверлоадинг { јавна статичка празнина Маин () {Цонсоле.ВритеЛине (Едурека.адд (12, 23)) Цонсоле.ВритеЛине (Едурека.адд (12, 23, 25))}}

// излаз:

35
60

Преоптерећење метода

Пример:

користећи Систем публиц цласс Едурека {публиц статиц инт адд (инт а, инт б) {ретурн а + б} публиц статиц флоат адд (флоат а, флоат б) {ретурн а + б}} публиц цласс ТестМемберОверлоадинг {публиц статиц воид Маин ( ) {Цонсоле.ВритеЛине (Едурека.адд (12, 23)) Цонсоле.ВритеЛине (Едурека.адд (12.4ф, 21.3ф))}}

// излаз:

35
33.699997

Превазилажење

Замена је ситуација када подређена класа дефинише исту методу коју дефинише и родитељ. Разумимо ово кроз мали пример.

Пример:

користећи Систем публиц цласс Едурека {публиц виртуал воид еат () {Цонсоле.ВритеЛине ('Еатинг')}} публиц цласс Дог: Едурека {публиц оверриде воид еат () {Цонсоле.ВритеЛине ('Еатинг фоод')}} публиц цласс Оверридинг {публиц статиц воид Маин () {Пас д = нови пас () д.еат ()}}

// излаз:

Једу храну

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

Тхе простор имена се у основи користи за обраду више класа присутних у програму. Простор имена доступан је на различите начине.

  • Систем.Цонсоле: Ево, Систем постаје простор имена
  • Да бисмо приступили класи простора имена, треба да користимо намеспаценаме.цласснаме.
  • Можемо да користимо Користећи кључна реч такође.

Пример:

користећи Систем користећи Фирст користећи Сецонд намеспаце Фирст {јавна класа Едурека {публиц воид саиВелцоме () {Цонсоле.ВритеЛине ('Велцоме То Едурека')}}} простор имена Други {публиц цласс Хаппи_Леарнинг {публиц воид саиВисхес () {Цонсоле.ВритеЛине (' Хаппи Леарнинг ')}}} јавни простор имена класе {публиц статиц воид Маин () {Едурека х1 = нев Едурека () Хаппи_Леарнинг в1 = нев Хаппи_Леарнинг () х1.саиВелцоме () в1.саиВисхес ()}}

// излаз:

Добродошли у Едуреку
Срећно учење

Филе Оператионс

Тхе операције са датотекама доступни у Ц # су следећи:

Операција Опис
БинариРеадер Чита примитивне податке из бинарног тока.
БинариВритер Записује примитивне податке у бинарном формату.
БуффередСтреам Привремено складиште за ток бајтова.
Именик Помаже у манипулисању структуром директоријума.
ДирецториИнфо Користи се за обављање операција на директоријумима.
ДривеИнфо Пружа информације о погонима.
Филе Помаже у манипулисању датотекама.
ФилеИнфо Користи се за извршавање операција над датотекама.
ФилеСтреам Користи се за читање и писање на било које место у датотеци.
МемориСтреам Користи се за насумични приступ струјеним подацима ускладиштеним у меморији.
Пут Обавља операције над информацијама о путањи.
СтреамРеадер Користи се за читање знакова из бајт тока.
СтреамВритер Користи се за писање знакова у ток.
СтрингРеадер Користи се за читање из међуспремника низа.
СтрингВритер Користи се за уписивање у међуспремник низа.

ФилеМоде

Тхе ФилеМоде је пописивач који дефинише више метода отварања датотека. Чланови ФилеМоде Енумератора описани су на следећи начин:

  • Додати: Отвара постојећу датотеку и ставља курсор на крај датотеке или креира датотеку ако датотека не постоји.
  • Креирај: Дизајниран је за стварање нове датотеке.
  • Створи ново: Дизајниран је да оперативном систему одреди да треба да креира нову датотеку.
  • Отворено: Дизајниран је за отварање постојеће датотеке.
  • ОпенОрЦреате: Дизајниран је да специфицира оперативни систем да треба да отвори датотеку ако постоји, у супротном треба да креира нову датотеку.
  • Скраћи: Трунцате отвара постојећу датотеку и скраћује њену величину на нула бајтова.

ФилеАццесс

ФилеАццесс Пописивач се користи за добијање приступа одређеној датотеци. Има следеће чланове.

  • читати
  • Напишите
  • РеадВрите

ФилеСхаре

Тхе Филесхаре Енумератор се користи за дељење одређене датотеке. Има следеће чланове.

  • Наследљиво: Инхеритабле омогућава руковаоцу датотекама да пренесе наследство подређеним процесима.
  • Ниједан: Нико не одбија дељење тренутне датотеке
  • Читати: Читање омогућава отварање датотеке за читање.
  • РеадВрите: РеадВрите омогућава отварање датотеке за читање и писање.
  • Напишите: Врите омогућава отварање датотеке за писање.

Догађаји

Догађај је опште познат као радња коју генерише корисник. То може бити клик миша, па чак и један притисак тастера са тастатуре. Слично томе, програми Ц # такође имају догађаје. Генератор догађаја назива се Издавач а прималац догађаја назива се претплатник.

Издавач

ДО Издавач садржи дефиницију догађаја и делегата. Тхе догађај-делегат у овом објекту је дефинисана асоцијација. А. Издавач објект класе позива догађај и обавештава се о другим објектима.

Претплатник

ДО претплатник прихвата догађај и обезбеђује руковалац догађајима. Тхе делегат у класи издавача позива методу / догађај руковалац претплатничке класе.

Пример:

користећи системски простор имена Едурека {јавни делегат стринг Дел (стринг стр) цласс ЕвентБлоцк {евент Дел НевЕвент публиц ЕвентБлоцк () {тхис.НевЕвент + = нев Дел (тхис.ВелцомеУсер)} јавни низ ВелцомеУсер (стринг корисничко име) {ретурн 'Добродошли у Едуреку . '+ корисничко име} статиц воид Маин (стринг [] аргс) {ЕвентБлоцк обј1 = нев ЕвентБлоцк () стринг ресулт = обј1.НевЕвент (' Хаппи Леарнинг ') Цонсоле.ВритеЛине (резултат)}}}

// излаз:

Добродошли у Едуреку. Срећно учење

Генерички

Генерички је концепт пружања чланова и метода класе држачима места у Време извођења. Генерике можемо дефинисати помоћу заграде. Погледајмо следеће примере.

Генерички лек у класи

користећи системски простор имена Едурека {цласс ГенерицЦласс {публиц ГенерицЦласс (Т мсг) {Цонсоле.ВритеЛине (мсг)}} цласс Програм {статиц воид Маин (стринг [] аргс) {ГенерицЦласс ген = нев ГенерицЦласс ('Ова порука је из генеричке класе' ) ГенерицЦласс генИ = нови ГенерицЦласс (123) ГенерицЦласс гетЦх = нови ГенерицЦласс ('Е')}}}

// излаз:

Ова порука је из генеричке класе
123
ИС

Генерички лек у методи

користећи системски простор имена Едурека {цласс ГенерицЦласс {публиц воид Схов (Т мсг) {Цонсоле.ВритеЛине (мсг)}} цласс Програм {статиц воид Маин (стринг [] аргс) {ГенерицЦласс генЦ = нев ГенерицЦласс () генЦ.Схов ('Тхис порука је од генеричке методе ') генЦ.Схов (321) генЦ.Схов (' Х ')}}}

// излаз:

Ова порука потиче од генеричке методе
321
Х.

Делегати

Тхе Делегат делује као референца на методу. У основи је исто што и показивач функције у Ц и Ц ++, али далеко бољи и сигурнији за тип. Делегат у статичка метода енкапсулира само методу. Док је делегат у инстанци метода обухваћа и методу и инстанцу. Најбоља употреба делегата је употреба као догађај.

Пример:

користећи делегат система инт Калкулатор (инт н) јавна класа Едурека {статиц инт нумбер = 25 публиц статиц инт адд (инт н) {нумбер = нумбер + н ретурн нумбер} публиц статиц инт мул (инт н) {нумбер = нумбер * н ретурн број} јавни статички инт гетНумбер () {враћени број} јавна статичка празнина Главна (стринг [] аргс) {Калкулатор ц1 = нови калкулатор (додај) Калкулатор ц2 = нови калкулатор (мул) ц1 (20) Цонсоле.ВритеЛине ('После калкулатора један делегат, нови број је: '+ гетНумбер ()) ц2 (3) Цонсоле.ВритеЛине (' Након делегата два калкулатора, нови број је: '+ гетНумбер ())}}

// излаз:

Након једног делегата калкулатора, нови број је: 45
Након делегата два калкулатора, нови број је: 135

Рефлецтион

Рефлексија је потребна да би се метаподаци добили током извођења. Референца је доступна у Систем.Рефлецтион простор имена. За извођење су потребне следеће класе.

  • Тип
  • МемберИнфо
  • ЦонструцторИнфо
  • МетходИнфо
  • ФиелдИнфо
  • ПропертиИнфо
  • ТипеИнфо
  • ЕвентИнфо
  • Модул
  • Скупштина
  • АссемблиНаме
  • Поинтер

Тип класе

Ц # Типе класа представља декларације типова за типове класа, типове интерфејса, типове набрајања, типове низова, типове вредности

Типе Пропертиес

Списак важних својстава класа типа наведен је у наставку.

Имовина Опис
Скупштина Добија скупштину за овај тип.
АссемблиКуалифиедНаме Добија квалификовано име за скупштину за овај тип.
Атрибути Добија атрибуте повезане са типом.
БасеТипе Добија основни или надређени тип.
Пуно име Добија потпуно квалификовано име типа.
ИсАпстракт користи се за проверу да ли је тип сажетак.
ИсАрраи користи се за проверу да ли је тип Арраи.
ИсЦласс користи се за проверу да ли је тип Цласс.
ИсЕнум користи се за проверу да ли је тип Енум.
ИсИнтерфаце користи се за проверу да ли је тип Интерфаце.
ИсНестед користи се за проверу да ли је тип угнежђен.
ИсПримитиве користи се за проверу да ли је тип примитиван.
ИсПоинтер користи се за проверу да ли је тип Поинтер.
ИсНотПублиц користи се за проверу да ли тип није јавни.
ИсПублиц користи се за проверу да ли је тип Публиц.
ИсСеатед користи се за проверу да ли је тип запечаћен.
ИсСериализабле користи се за проверу да ли је тип могуће сериализовати.
МемберТипе користи се за проверу да ли је тип члан тип угнежђеног типа.
Модул Добија модул типа.
Име Добија име типа.
Простор имена Добија именски простор типа.
Имовина Опис
ГетЦонструцторс () Враћа све јавне конструкторе за Тип.
ГетЦонструцторс (БиндингФлагс) Враћа све конструкторе за тип са наведеним БиндингФлагс.
ГетФиелдс () Враћа сва јавна поља за Тип.
ГетФиелдс (БиндингФлагс) Враћа све јавне конструкторе за тип са наведеним БиндингФлагс.
ГетМемберс () Враћа све јавне чланове за Тип.
ГетМемберс (БиндингФлагс) Враћа све чланове за тип са наведеним БиндингФлагс.
ГетМетходс () Враћа све јавне методе за Тип.
ГетМетходс (БиндингФлагс) Враћа све методе за Тип са наведеним БиндингФлагс.
ГетПропертиес () Враћа сва јавна својства за Тип.
ГетПропертиес (БиндингФлагс) Враћа сва својства типа са наведеним БиндингФлагс.
ГетТипе () Добија тренутни тип.
ГетТипе (Стринг) Добија тип за дато име.

Примери рефлексије:

Гет Типе

Пример:

користећи системску јавну класу ГетТипе {публиц статиц воид Маин () {инт а = 10 Типе типе = а.ГетТипе () Цонсоле.ВритеЛине (типе)}}

// излаз:

Систем.Инт32

Узми скупштину

Пример:

користећи Систем користећи Систем.Рефлецтион јавну класу ГетАссембли {јавна статичка воид Маин () {Типе т = типеоф (Систем.Стринг) Цонсоле.ВритеЛине (т.Ассембли)}}

// излаз:

Систем.Привате.ЦореЛиб, Верзија = 4.0.0.0, Култура = неутрална, ПублицКеиТокен = 7цец85д7беа7798е

Информације о врсти штампе

Пример:

користећи Систем користећи Систем.Рефлецтион јавну класу ПринтТипе {публиц статиц воид Маин () {Типе т = типеоф (Систем.Стринг) Цонсоле.ВритеЛине (т.ФуллНаме) Цонсоле.ВритеЛине (т.БасеТипе) Цонсоле.ВритеЛине (т.ИсЦласс) Цонсоле.ВритеЛине (т.ИсЕнум) Цонсоле.ВритеЛине (т.ИсИнтерфаце)}}

// излаз:

Истина
Нетачно
Нетачно

Принт Цонструцторс

Пример:

користећи Систем користећи Систем.Рефлецтион јавну класу ПринтЦонструцторс {публиц статиц воид Маин () {Типе т = типеоф (Систем.Стринг) Цонсоле.ВритеЛине ('Конструктори {0} типа ...', т) ЦонструцторИнфо [] ци = т .ГетЦонструцторс (БиндингФлагс.Публиц | БиндингФлагс.Инстанце) фореацх (ЦонструцторИнфо ц ин ци) {Цонсоле.ВритеЛине (ц)}}}

// излаз:

Конструктори типа Систем.Стринг ...
Воид .цтор (Цхар [])
Воид .цтор (Цхар [], Инт32, Инт32)
Воид .цтор (Цхар *)
Воид .цтор (Цхар *, Инт32, Инт32)
Воид .цтор (СБите *)
Воид .цтор (СБите *, Инт32, Инт32)
Воид .цтор (СБите *, Инт32, Инт32, Систем.Тект.Енцодинг)
Воид .цтор (Цхар, Инт32)
Воид .цтор (Систем.РеадОнлиСпан`1 [Систем.Цхар])

Методе штампања

Пример:

користећи Систем користећи Систем.Рефлецтион јавну класу ПринтМетходс {публиц статиц воид Маин () {Типе т = типеоф (Систем.Стринг) Цонсоле.ВритеЛине ('Метходс оф {0} типе ...', т) МетходИнфо [] ци = т .ГетМетходс (БиндингФлагс.Публиц | БиндингФлагс.Инстанце) фореацх (МетходИнфо м ин ци) {Цонсоле.ВритеЛине (м)}}}

// излаз:

Методе типа Систем.Стринг ...
Систем.Стринг Реплаце (Систем.Стринг, Систем.Стринг)
Систем.Стринг [] Сплит (Цхар, Систем.СтрингСплитОптионс)
Систем.Стринг [] Сплит (Цхар, Инт32, Систем.СтрингСплитОптионс)
Систем.Стринг [] Сплит (Цхар [])
Систем.Стринг [] Сплит (Цхар [], Инт32)
Систем.Стринг [] Сплит (Цхар [], Систем.СтрингСплитОптионс)
Систем.Стринг [] Сплит (Цхар [], Инт32, Систем.СтрингСплитОптионс)
Систем.Стринг [] Сплит (Систем.Стринг, Систем.СтрингСплитОптионс)
Систем.Стринг [] Сплит (Систем.Стринг, Инт32, Систем.СтрингСплитОптионс)
Систем.Стринг [] Сплит (Систем.Стринг [], Систем.СтрингСплитОптионс)
Систем.Стринг [] Сплит (Систем.Стринг [], Инт32, Систем.СтрингСплитОптионс) ......

Поља за штампу

Пример:

користећи Систем користећи Систем.Рефлецтион јавну класу ПринтФиелдс {публиц статиц воид Маин () {Типе т = типеоф (Систем.Стринг) Цонсоле.ВритеЛине ('Поља {0} типе ...', т) ФиелдИнфо [] ци = т .ГетФиелдс (БиндингФлагс.Публиц | БиндингФлагс.Статиц | БиндингФлагс.НонПублиц) фореацх (ФиелдИнфо ф ин ци) {Цонсоле.ВритеЛине (ф)}}}

// излаз:

Поља типа Систем.Стринг ...
Систем.Стринг Емпти

Пређимо сада на неке напредне концепте програмирања за Ц #

Напредни концепти Ц #

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

Позива се функција којој недостаје одређено име Анонимно Функције. У Ц # постоје две врсте анонимних функција

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

Пример:

користећи системски простор имена ЛамбдаЕкпрессионс {класа Едурека {делегат инт Скуаре (инт нум) статиц воид Маин (стринг [] аргс) {Скуаре ГетСкуаре = к => к * к инт ј = ГетСкуаре (25) Цонсоле.ВритеЛине ('Скуаре:' + ј)}}}

// излаз:

Квадрат: 625

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

Тхе анонимна метода пружа исту функционалност као и ламбда израз, осим што нам омогућава да занемаримо листу параметара.

Пример:

користећи системски простор имена АнонимоусМетходс {цласс Програм {јавни делегат воид АнонимоусФун () статиц воид Маин (стринг [] аргс) {АнонимоусФун фун = делегате () {Цонсоле.ВритеЛине ('Ово је анонимна функција')} забава ()}}}

// излаз:

Ово је анонимна функција

Мулти-Тхреадинг

Мултитхреадинг је процес у којем се ствара више нити које се додељују за различите задатке. ово штеди време извршавањем више послова истовремено. Класа мултитхреадинг је доступна у Систем.Тхадинг простор имена.

Систем.Тхреадинг намеспаце

Тхе Систем.Тхадинг именски простор садржи класе и интерфејсе за олакшавање мултитхреадинга. Пружа класе за синхронизацију ресурса нити. Списак најчешће коришћених класа дат је у наставку:

  • Навој
  • Мутек
  • Тајмер
  • Монитор
  • Семафор
  • ТхреадЛоцал
  • ТхреадПоол
  • Испарљиво

Процес и нит

Процес је заправо и апликација и сматра се да је а тешкаш саставни део. С друге стране, нит је једна једина модул целе апликације. То је лагана у поређењу са процесом

Животни циклус нити

Свака нит има животни циклус. Животни циклус нити је дефинисан у класи Систем.Тхреадинг.Тхреад. Следе фазе у животном циклусу било које нити.

  • Непокренуто
  • Може се покренути (спреман за покретање)
  • Трчање
  • Није могуће покренути
  • Мртав

Класа Тхреад пружа следећа својства и методе како следи.

Својства навоја

Имовина Опис
ЦуррентТхреад враћа инстанцу тренутно покренуте нити.
Је жив проверава да ли је тренутна нит жива или не.
ИсБацкгроунд Да бисте добили / поставили вредност тренутне нити у позадини је или не.
МанагедТхреадИд користи се за добијање јединственог ИД-а за тренутно управљану нит.
Име користи се за добијање или постављање имена тренутне нити.
Приоритет користи се за добијање или постављање приоритета тренутне нити.
ТхреадСтате користи се за враћање вредности која представља стање нити.

Методе навоја

Метод Опис
Побачај () користи се за прекидање нити. Покреће ТхреадАбортЕкцептион.
Прекидати() користи се за прекидање нити која је у стању ВаитСлеепЈоин.
Придружити() користи се за блокирање свих позива нити док се ова нит не заврши.
РесетАборт () користи се за отказивање захтева за прекид за тренутну нит.
Резиме() користи се за наставак суспендоване нити. Застарело је.
Спавање (Инт32) користи се за суспендовање тренутне нити на одређене милисекунде.
Почетак() мења тренутно стање нити у Руннабле.
Суспенд () суспендује тренутну нит ако није суспендована. Застарело је.
Принос () користи се за извршавање тренутне нити у другу нит.

Пример главне нити

користећи Систем користећи Систем.Тхреадинг јавну класу Едурека {публиц статиц воид Маин (стринг [] аргс) {Тхреад т = Тхреад.ЦуррентТхреад т.Наме = 'МаинТхреад' Цонсоле.ВритеЛине (т.Наме)}}

// излаз:

МаинТхреад

Изузетак руковање

Тхе изузетак је грешка коју је програм избацио током свог извођења. Обављамо руковање изузецима како бисмо наш изузетак учинили бесплатним.

Изузетак Опис
Систем.ДивидеБиЗероЕкцептион Грешка генерисана дељењем броја са нулом.
Систем.НуллРеференцеЕкцептион обрађује грешку генерисану референцом на нулти објекат.
Систем.ИнвалидЦастЕкцептион обрађује грешку генерисану неважећим слањем типова.
Систем.ИО.ИОЕкцептион обрађује грешке улаза / излаза.
Систем.ФиелдАццессЕкцептион Грешка генерисана неважећим приватним / заштићеним приступом.

У Ц # користимо 4 кључне речи за извођење Изузетак руковање:

  • покушати
  • улов
  • коначно, и
  • бацити
Пример:
помоћу системске јавне класе ЕдурекЕкампле {јавна статичка празнина Маин (стринг [] аргс) {три {инт а = 10 инт б = 0 инт к = а / б} цатцх (Екцептион е) {Цонсоле.ВритеЛине (е)} Цонсоле.ВритеЛине ('Ова порука је из блока цатцх')}}

// излаз:

Систем.ДивидеБиЗероЕкцептион: Покушај дељења са нулом.
на ЕкЕкаЕдурекампле.Маин (Стринг [] аргс) у Ф: Ц # ТуториалЦ # ПрограмсЦонсолеАпп1ЦонсолеАпп1Програм.цс: ред 10
Ова порука је из блока цатцх

Пример прилагођеног изузетка

користећи системску јавну класу ИнвалидАгеЕкцептион: Изузетак {публиц ИнвалидАгеЕкцептион (стринг порука): база (порука) {}} јавна класа Прилагођено {статиц воид валидате (инт аге) {иф (аге<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.') } } 

// излаз:

ИнвалидАгеЕкцептион: Жао нам је, очекује се да ће старост бити већа од 18 година
на Цустомизед.валидате (Инт32 старост) у Ф: Ц # ТуториалЦ # ПрограмсЦонсолеАпп1ЦонсолеАпп1Програм.цс: ред 18
на Цустомизед.Маин (Стринг [] аргс) у Ф: Ц # ТуториалЦ # ПрограмсЦонсолеАпп1ЦонсолеАпп1Програм.цс: ред 23
Блок улова се тренутно извршава.

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

помоћу системске јавне класе ФиналЕкецптион {публиц статиц воид Маин (стринг [] аргс) {три {инт а = 10 инт б = 0 инт к = а / б} цатцх (Екцептион е) {Цонсоле.ВритеЛине (е)} коначно {Цонсоле .ВритеЛине ('Коначно се извршава блок')} Цонсоле.ВритеЛине ('Блок хватања се извршава')}}

// излаз:

Систем.ДивидеБиЗероЕкцептион: Покушај дељења са нулом.
на ФиналЕкецптион.Маин (Стринг [] аргс) у Ф: Ц # ТуториалЦ # ПрограмсЦонсолеАпп1ЦонсолеАпп1Програм.цс: ред 10
Коначно се извршава блок
Блок улова се извршава

Потпис изузетка система

[СериализаблеАттрибуте] [ЦомВисиблеАттрибуте (труе)] јавна класа СистемЕкцептион: Изузетак

Конструктори системских изузетака

Градитељ Опис
СистемЕкцептион () Користи се за иницијализацију нове инстанце класе СистемЕкцептион.
СистемЕкцептион

(СериализатионИнфо, СтреамингЦонтект)

Користи се за иницијализацију нове инстанце класе СистемЕкцептион сериализованим подацима.
СистемЕкцептион (Стринг) Користи се за иницијализацију нове инстанце класе СистемЕкцептион са наведеном поруком о грешци.
СистемЕкцептион (Стринг, Екцептион) Користи се за иницијализацију нове инстанце класе СистемЕкцептион са наведеном поруком о грешци и референцом на унутрашњи изузетак који је узрок овог изузетка.

Својства системских изузетака

Имовина Опис
Подаци Користи се за добивање колекције парова кључ / вредност који пружају додатне кориснички дефинисане информације о изузетку.
ХелпЛинк Користи се за добијање или постављање везе до датотеке помоћи повезане са овим изузетком.
ХРесулт Користи се за добивање или постављање ХРЕСУЛТ, кодиране нумеричке вредности која се додељује одређеном изузетку.
ИннерЕкцептион Користи се за добијање инстанце Екцептион која је изазвала тренутни изузетак.
Порука Користи се за добијање поруке која описује тренутни изузетак.
Извор Користи се за добијање или постављање имена апликације која узрокује грешку.
СтацкТраце Користи се за добијање стринг презентације непосредних оквира на стеку позива.
ТаргетСите Користи се за добијање методе која баца тренутни изузетак.

Методе изузетака система

Методе Опис
Једнако (објекат) Користи се за проверу да ли је наведени објекат једнак тренутном објекту или не.
Довршити () Користи се за ослобађање ресурса и обављање операција чишћења.
ГетБасеЕкцептион () Користи се за добијање роот изузетака.
ГетХасхЦоде () Користи се за добијање хеш кода.
ГетОбјецтДата

(СериализатионИнфо, СтреамингЦонтект)

Користи се за добијање података о објектима.
ГетТипе () Користи се за добијање типа извршавања тренутне инстанце.
МембервисеЦлоне () Користи се за стварање плитке копије тренутног Објекта.
ТоСтринг () Користи се за креирање и враћање низовног представљања тренутног изузетка.

Пример изузетка система

користећи Систем намеспаце ЦСхарпПрограм {цласс СистемЕкцептионЕкампле {статиц воид Маин (стринг [] аргс) {три {инт [] арр = нев инт [5] арр [10] = 25} цатцх (СистемЕкцептион е) {Цонсоле.ВритеЛине (е)} }}}

// излаз:

Систем.ИндекОутОфРангеЕкцептион: Индекс је био изван граница низа.
на ЦСхарпПрограм.СистемЕкцептионЕкампле.Маин (Стринг [] аргс) у Ф: Ц # ТуториалЦ # ПрограмсЦонсолеАпп1ЦонсолеАпп1Програм.цс: ред 11

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

Синхронизација може бити техника која омогућава само 1 нити да приступи ресурсу одређено време. Ниједна алтернативна нит неће прекидати док именована нит не заврши свој задатак.

У програму са вишеструким нитима, нити су дозвољенеза приступ било ком ресурсу заодређено извршењевреме. Нити деле ресурсе и извршавају се асинхроно. Приступ заједничким ресурсима (подацима)може бити важан задатакто генералномогао зауставитисистем.имамо тенденцију да на то утичемостварањем-нити на синхрони начин.

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

користећи Систем користећи Систем.Тхреадинг класу Едурека {публиц воид ПринтТабле () {фор (инт и = 1 и<= 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

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

користећи Систем користећи Систем.Тхреадинг класу Едурека {публиц воид ПринтТабле () {лоцк (тхис) {фор (инт и = 1 и<= 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

Нове функције

Мицрософт је додао многе најновије функције на језик Ц #, а неке од њих су наведене у наставку.

Ц # 6.0

  • Коришћење статичке директиве
  • Филтери за изузетке
  • Чека се улов / коначно блокови
  • Аутоматски покретачи својстава
  • Подразумеване вредности за својства само гетера
  • Чланови изражени у изразу
  • Нулти пропагатор
  • Интерполација низа
  • Име оператора
  • Иницијализатор речника
  • Компајлер као услуга (Рослин)

Ц # 7.0

  • Поклапање облика
  • Тупле
  • Деконструкција
  • Локалне функције
  • Дигит сепаратор
  • Бинарни литерали
  • Реф се враћа и мештани
  • Конструктори и финализатори изражени у изразу
  • Добивачи и постављачи изражених тела
  • Оут променљиве
  • Генерализовани асинхрони типови повратка

Ц # 7.1

  • Асинц маин
  • Подразумевани изрази

Питања за интервју заснована на Ц #

Важна питања за интервјуе заснована на програмском језику Ц # могу се наћи у овом ажурираном тексту .

Овим смо дошли до краја овог чланка „Водич за Ц #“. Надам се да сте разумели важност структура података, синтаксе, функционалности и операција изведених помоћу њих. Сад кад сте кроз ово разумели основе програмирања у Ц #Водич за Ц #, погледајте пружена обука Едурека о многим технологијама попут Јаве, Пролеће и многивише, поуздана компанија за учење на мрежи са мрежом од више од 250.000 задовољних ученика раширених широм света добила је питање за нас? Спомените то у одељку за коментаре овог блога „Водич за Ц #“ и јавићемо вам се што је пре могуће.