C # Tutorial: Základy, které potřebujete k zvládnutí C #



Tento článek o výuce C # vám pomůže s podrobnými znalostmi o C # fundementals spolu s příklady v reálném čase pro lepší pochopení.

C # je univerzální a robustní programovací jazyk vyvinutý společností Microsoft Corporation v roce 2000 jako smrtící konkurent pro Javu. Je nejpopulárnějším a dominujícím programovacím jazykem, pokud jde o vývoj webových aplikací i vývoj desktopových aplikací.

V tomto C # tutoriálu se naučíme následující koncepty.





C # Základy

Úvod do programovacího jazyka C #

Na počátku 90. let byla Java vedoucím programovacím jazykem pro vývoj webových aplikací, vývoj desktopových aplikací a mnoho dalších oborů. Společnost Microsoft chtěla přijít s konkurencí s mnoha pokročilými funkcemi, které by mohly Javu nechat daleko za sebou.



C#-Tutorial-hejlsberg_bio

Bylo to v roce 2000, Anders Hejlsberg a jeho tým Microsoftu přišel s nápadem C # populárně nazývaného C-Sharp. Tato iniciativa byla schválena Mezinárodní organizací pro normalizaci (HLAVNÍ, DŮLEŽITÝ) a Evropská asociace výrobců počítačů (ECMA). a nakonec C # vstupuje do světa vývoje softwaru.

Vlastnosti programovacího jazyka C #



  • Objektově orientovaný programovací jazyk

Objektově orientovaný programovací přístup je to, co dělá z C # ostrého programátorsky nejpříjemnější a snadno se rozvíjející a udržující programovací jazyk.

  • Typově bezpečný jazyk

Význam Type-Safe spočívá v tom, že kompilátoru bude udělen přístup pouze k umístění v paměti, které má oprávnění ke spuštění. Tato funkce zvyšuje bezpečnost kódu na exponenciální úroveň.

  • Interoperabilita

Díky vlastnosti Interoperability je C # dostatečně schopný dělat vše, co je nativní pro C ++ efektivnějším způsobem, který může překonat samotný C ++.

  • Bohatá knihovna

C # poskytuje přístup k více číslům vestavěných knihoven, které poskytují předprogramované funkce ke snížení času stráveného v procesu vývoje.

  • Škálovatelné a aktualizovatelné

C # byl navržen tak, aby byl mezi ostatními programovacími jazyky lepší. Proto je vždy otevřený aktualizacím a díky svým funkcím si zachovává vysokou škálovatelnost.

  • Orientováno na součást

Vývojáři společnosti Microsoft použili k vývoji C # přístup založený na komponentách. Toto je nejvíce převládající vývojová metodika pro udržení C # vysoce škálovatelné a aktualizované.

  • Strukturovaný jazyk

Během životního cyklu vývoje softwaru se dává přednost přístupu strukturovaného programování, protože je snadné vyvinout kompilaci a nasazení softwaru ve srovnání s přístupem programování orientovaným na procedury.

  • Rychle

Programování v C # je rychlejší při kompilaci a provádění ve srovnání s C ++ a jinými programovacími jazyky.

Instalace

Je prokázáno, že Microsoft Visual Studio je nejlepší editor ve své třídě pro programování v C #. Nainstalujeme a nastavíme Microsoft Visual Studio pro provádění našich C # programů podle následujících kroků:

Krok 1 : Stáhněte si Microsoft Visual Studio

Google pro nejnovější verze sady Visual Studio a stáhněte si Nainstalujte soubor do místního systému a poté běh instalační soubor jako správce.

Krok 2: Vyberte .NET Desktop Development Package

Jakmile spustíte instalační program, Visual Studio Editor se úspěšně stáhne do vašeho místního systému. Později se na ploše zobrazí dialogové okno s dotazem konkrétní balíček co potřebujete ve svém systému. Zde musíte vybrat Vývoj .NET desktopu balík.

Krok 3: Nastavte prostředí C #

Jakmile vaše balíčky pro Vývoj .NET staženy, zobrazí se na obrazovce další dialogové okno s dotazem na vývojové prostředí, které hledáte. Tady musíte vyberte prostředí pro C #.

Krok 4: Vytvořte svůj první projekt

Jakmile je prostředí nastaveno, můžete začít. Spusťte Visual Studio a vyberte vytvořit nový projekt v zobrazeném dialogovém okně.

Budete přesměrováni na další dialogové okno a tam musíte vybrat Knihovnu tříd jako .NET Standard Jak je ukázáno níže.

V dalším dialogovém okně budete požádáni Nakonfigurujte svůj projekt . Nakonfigurujte to a nyní jste v editoru. Napište svůj první program a běh to. Výstup bude úspěšně zobrazen na Příkazový řádek.

pomocí třídy systému Edureka {static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}

//Výstup:

Provedeme náš první C # program.

Struktura programu v C #

Nyní, když jsme provedli náš první C # program, pojďme podrobně porozumět jeho struktuře. Jednoduchý program C # má následující části.

pomocí System namespace ConsoleApplication1 {public class Edureka {public static void Main (string [] args) {Console.WriteLine ('Welcome to Edureka !, Happy Learning ..!')}}}

//Výstup:

Vítejte na Edurece !, Happy Learning ..!

  • třída: třída může být obecně definována jako klíčové slovo který se používá k definování třídy v C # programu.
  • Edureka: Je to jméno Třída. Třída je často považována za plán, který ukládá členy a metody související s třídou.
  • Hlavní: V podstatě je primární metoda celého C # programu, funguje jako brána pro ovládání pro vstup do programu. Spustí se před provedením jakékoli jiné metody programu.
  • neplatnost: Tento segment kódu je určen pro návratový typ metody. Může to být jakýkoli datový typ jiný než neplatný. Void znamená, že metoda nemá žádná data, která by se z ní vracela.
  • statický: Tohle je klíčové slovo který říká, že deklarované datové členy jsou statické a vyhrazená paměť je přidělena deklarovaným členům.
  • Řetězec [] args: Podobá se argumentům příkazového řádku, které používáme v našem programu. Zatímco provádíme náš program, některé v zásadě projdeme argumenty, které program přijme kvůli tomuto prohlášení.
  • System.Console.WriteLine („Vítejte na Edurece !, Happy Learning ..!“) Tady, Systém je jmenný prostor. Konzoleje to, že uvedená kategoriev jmenném prostoru systému. The WriteLine () je tostatickýtechnikakonzolykategorie, která se používá k zápisutext na konzole.

Nyní se naučíme datové typy dostupné v C #.

Typy dat

Datové typy v C # jsou rozděleny do tří kategorií, které jsou popsány níže.

Hodnotové datové typy

The Hodnotové datové typy jsou umístěny v System.ValueType Knihovna a jsou vždy připraveny k přímému přístupu a proměnné lze přímo přiřadit konkrétní hodnotě. Hodnotové datové typy se dále dělí na dva typy, jak je znázorněno níže:

  • Předdefinované datové typy
  • Uživatelem definované datové typy

Předdefinované datové typy: To jsou ty, které běžně používáme při každodenním programování. Tyto datové typy jsou předdefinovány vývojáři jazyků a jsou připraveny k použití pro programátory.

Příklad:

int, float, char, short double atd

Uživatelem definované datové typy: Existují situace, kdy možná budeme muset ukládat různé hodnoty z datových typů do jedné proměnné. V těchto případech Předdefinované datové typy nestačí. Definováno uživatelem Datové typy jsou pro uživatele jako přizpůsobitelné datové typy.

Příklad: Struktura, Enum

Datový typ Rozsah přidělené paměti Velikost paměti
podepsaný znak -128 až 127 1 bajt
nepodepsaný znak 0 až 127 1 bajt
char -128 až 127 1 bajt
podepsal krátce -32 768 až 32 767 2 bajty
bez znaménka krátký 0 až 65 535 2 bajty
krátký -32 768 až 32 767 2 bajty
podepsané int -2 147 483 648 až -2 147 483 647 4 byty
nepodepsané int 0 až 4 294 967 295 4 byty
int -2 147 483 648 až -2 147 483 647 4 byty
podepsal dlouho -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 8 bajtů
bez znaménka dlouho 0 až 18 446 744 073 709 551 615 8 bajtů
dlouho -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 8 bajtů
plovák 1,5 * 10-45 - 3,4 * 1038, (7místná přesnost) 4 byty
dvojnásobek 5,0 * 10-324 - 1,7 * 10308, (přesnost 15 číslic) 8 bajtů
desetinný -7,9 * 10-28 - 7,9 * 1028, (přesnost 28 číslic) 16 bajtů


Datový typ ukazatele

Pointer Type je jednoduchý datový typ. Jeho funkčnost je zcela podobná ukazatelům v C. Jsou určeny k uložení adresy jiného ukazatele.

float * ptr

Referenční datové typy

Název je samozřejmý. The Referenční datové typy ve skutečnosti neukládají proměnné, místo toho ukládají referenční hodnotu k dané konkrétní proměnné. Jinými slovy, ukládají adresu skutečné proměnné.

Referenční proměnné jsou rozděleny do tří různých typů, jak je uvedeno níže:

  • Typ objektu

Datový typ objektu je k dispozici v System.Object Třída.Objekttypymůže býtpřidělen khodnotyostatní typy,odkaztypy, předdefinované, definované uživatelemtypy. Ale předtímúkolhodnot, to vyžaduje typ konverze.

objekt abc abc = 50 // tomu se říká box
  • Dynamický typ

Proměnné dynamického typu jsou navrženy tak, aby ukládaly téměř všechny typy hodnot. Nazývá se jako dynamický typ, protože kontrola typu hodnot probíhá za běhu

dynamické x = 10
  • Typ řetězce

Typ řetězce je k dispozici v System.String třída. Typ řetězce je určen k ukládání řetězcových literálů. Řetězcové literály jsou uloženy ve dvou formách vdvě formy

    • citováno
    • @ citováno.
Řetězec S = 'Edureka'
  • The @ citováno řetězcový literál vypadá
@ 'Edureka'

Nyní pochopme proměnné.

Proměnné

veřejný řetězec tostring ()

Proměnné jsou názvy přidělené umístění paměti, které ukládá určitá data zadaná uživatelem a tato data jsou snadno přístupná pomocí názvu proměnné. V C # je k dispozici pět typů proměnných

Typ Příklad
Nula Nulová data
Booleovský Pravda a lež
Celé číslo Int, Char, Byte, Short, Long
Plovák Float a Double
Desetinný Desetinný

Příklad:

int a, b double x float p char abc

Pravidla, která je třeba dodržovat při deklaraci proměnných v C #

  • Proměnná může obsahovat abecedy, číslice a podtržítka.
  • Název proměnné může začínat pouze abecedou nebo podtržítkem.
  • Proměnné nemohou začínat číslicí nebo zvláštním znakem.
  • Mezi názvy proměnných nejsou povoleny mezery.
  • Vyhrazená klíčová slova mohou být použita jako názvy proměnných.

Operátoři

Operátor lze definovat jako speciální symbol, který vysvětluje počítači, aby provedl konkrétní matematickou operaci, která je logickou operací se sadou proměnných. C # zahrnuje řadu operátorů, které jsou uvedeny níže.

  • Aritmetické operátory
  • Relační operátoři
  • Logičtí operátoři
  • Bitové operátory
  • Operátoři přiřazení

Aritmetické operátory

Operátor Příklad Popis
+ A + B Přidá dva operandy
- A - B Podloží dva operandy
* A * B Násobí dva operandy
/ A / B Rozdělí dva operandy
% A% B Zbytek dvou operandů
++ A ++ Přírůstková operace
- NA- Dekrementace

Relační operátoři

Operátor Příklad Popis
== A == B Je pravda, že pokud jsou oba operandy stejné, Else False
! = A! = B Je pravda, že pokud si oba operandy nejsou stejné, Else False
> A> B Je pravda, že pokud je A větší, jinak False
< NA Je pravda, že pokud je B větší, jinak falešné
> = A> = B Je pravda, že pokud je A větší nebo rovné, Else False
<= NA<= B Je pravda, že id B je větší rovný, jinak falešný

Logičtí operátoři

Operátor Příklad Popis
&& A && B. Je pravda, že pokud jsou oba operandy pravdivé, jinak False
|| A || B Je pravda, že pokud je jeden z operandů pravdivý, Else False
! A! B Obrátí logický stav operandu

Bitové operátory

NA B A & B A | B A ^ B
jeden jeden jeden jeden 0
jeden 0 0 jeden jeden
0 jeden 0 jeden jeden
0 0 0 0 0
Operátor Příklad Popis
~ (~ A) Operátor doplňku Binary One je unární a má účinek „převrácení“ bitů.
<< NA<<2 Binární operátor levého řazení. Hodnota levého operandu je přesunuta doleva o počet bitů určený pravým operandem.
>> A >> 2 Operátor binárního řazení vpravo. Hodnota levého operandu se posune doprava o počet bitů určený pravým operandem.

Operátoři přiřazení

Operátor Příklad Popis
= A = B + C A = B + C, B + C je přiřazeno A
+ = A + = B A = A + B, A + B je přiřazeno A
- = A - = B A = A-B, A-B je přiřazeno A
* = A - = B A = A * B, A * B je přiřazeno A
/ = A / = B A = A / B, A / B je přiřazeno A
% = A% = B A = A% B, A% B je přiřazeno A
<<= NA<<= 2 Operátor levého posunu a přiřazení
>> = A >> = 2 Operátor řazení a přiřazení doprava
& = A & = 2 Bitový operátor a operátor přiřazení
^ = A ^ = 2 Bitový operátor exkluzivity a přiřazení
| = A! = 2 Bitový inkluzivní a přiřazovací operátor

Smyčky

NA smyčka příkaz se používá k opakovanému provádění bloku příkazů, dokud není splněna určitá podmínka. Jazyk C # se skládá z následujících příkazů smyčky.

  • Pro smyčku
  • Zatímco Loop
  • Dělejte smyčku

Pro smyčku

The pro smyčku se používá k provádění určitého segmentu kódu několikrát, dokud není splněna daná podmínka.

Syntax

pro (přírůstek / pokles inicializační podmínky) {// segment kódu}

Vývojový diagram:

Příklad:

pomocí System public class ForExample {public static void Main (string [] args) {for (int i = 1 i<= 5 i++) { Console.WriteLine(i) } } } 

//Výstup:

jeden
2
3
4
5

Zatímco Loop

The Zatímco smyčka se používá k provedení segmentu kódu několikrát, dokud není splněna konkrétní podmínka.

Syntax

while (podmínka) {// kód k provedení}

Vývojový diagram:

Příklad:

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

//Výstup:

Hodnota a: 5
Hodnota a: 6
Hodnota a: 7
Hodnota a: 8
Hodnota a: 9
Hodnota a: 10

Dělejte smyčku

Smyčka Do while je zcela podobná smyčce While Loop, ale jediným rozdílem je, že podmínka je umístěna na konci smyčky. Proto je smyčka provedena alespoň jednou.

Syntax

do {// kód k provedení} while (podmínka)

Vývojový diagram:

Příklad:

using System namespace 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, produkt) i ++} while (i<= 10) } } } 

//Výstup:

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

Podmiňovací způsob

Podmíněná prohlášení se používají k provedení prohlášení nebo skupina prohlášení na základě nějaké podmínky. Pokud stav je tedy pravda C # prohlášení jsou provedeny jinak další prohlášení bude proveden.

Různé typy podmíněných příkazů v jazyce C ++ jsou následující:

  1. Pokud prohlášení
  2. Příkaz If-Else
  3. Vnořený příkaz If-else
  4. If-Else If žebřík
  5. Přepnout prohlášení

Pokud prohlášení

Singl -li příkaz v jazyce C # se používá ke spuštění kódu, pokud je splněna podmínka. Nazývá se také jednosměrný výběrový příkaz.

Syntax

if (boolean-expression) {// příkazy provedené, pokud je logický výraz true}

Vývojový diagram:

Příklad:

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

//Výstup:

2 je menší než 5
Toto prohlášení je vždy provedeno.

Příkaz If-Else

The kdyby-jinak příkaz v jazyce C se používá ke spuštění kódu, pokud je podmínka pravdivá nebo nepravdivá. Nazývá se také obousměrný výběrový příkaz.

Syntax

if (boolean-expression) {// příkazy provedeny, pokud je logický výraz pravdivý} else {// příkazy provedeny, pokud je logický výraz nepravdivý}

Vývojový diagram:

Příklad:

pomocí System namespace Podmíněné {třída IfElseStatement {public static void Main (string [] args) {int number = 12 if (number<5) { Console.WriteLine('{0} is less than 5', number) } else { Console.WriteLine('{0} is greater than or equal to 5', number) } Console.WriteLine('This statement is always executed.') } } } 

//Výstup:

12 je větší nebo rovno 5
Toto prohlášení je vždy provedeno.

Vnořený příkaz If-else

Vnořené kdyby-jinak příkaz se používá, když program vyžaduje více než jeden testovací výraz. Nazývá se také vícecestný výběrový příkaz. Pokud je ve výpisu zahrnuta řada rozhodnutí, použijeme kdyby-jinak výpis ve vnořené podobě.

Syntax

if (boolean-výraz) {if (vnořený výraz-1) {// kód k provedení} else {// kód k provedení}} else {if (vnořený výraz-2) {// kód k provedení } else {// kód k provedení}}

Vývojový diagram:

Příklad:

pomocí System namespace Podmíněné {třída vnořena {public static void Main (string [] args) {int first = 7, second = -23, third = 13 if (first & gt second) {if (first

//Výstup:

13 je největší

Jinak žebřík

The if-else-if příkaz se používá k provedení jednoho kódu z více podmínek. Nazývá se také prohlášení o vícecestném rozhodování. Jedná se o řetězec příkazů if..else, ve kterém je každý příkaz if spojen s příkazem else if a last by byl příkaz else.

Syntax

if (podmínka1) {// kód, který se má provést, pokud je podmínka1 pravdivá} else if (podmínka2) {// kód, který se má provést, pokud je podmínka2 pravdivá} else if (podmínka3) {// kód, který se má provést, pokud je podmínka3 pravdivá} ... else {// kód, který se má provést, pokud jsou splněny všechny podmínky}

Vývojový diagram:

Příklad:

pomocí třídy systému 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 je 15 ') else if (i == 20) Console.WriteLine (' i is 20 ') else Console.WriteLine (' i is not present ')}}

//Výstup:

já je 20

Přepnout prohlášení

Přepínač příkaz slouží jako náhrada za dlouhý žebřík if-else-if, který se používá k testování seznamu případů. Příkaz switch obsahuje jeden nebo více popisků případů, které jsou testovány proti výrazu switch. Když se výraz shoduje s případem, provedou se související příkazy s tímto případem.

Syntax

switch (proměnná / výraz) {hodnota případu1: // Příkazy provedené, pokud výraz (nebo proměnná) = hodnota1 hodnota přerušení případu2: // Příkazy provedené, pokud výraz (nebo proměnná) = hodnota1 přerušení ... ... ... .. ... ... výchozí: // Příkazy provedené, pokud se neshoduje žádný případ}

Vývojový diagram:

Příklad:

pomocí System namespace Podmíněný {class SwitchCase {public static void Main (string [] args) {char ch Console.WriteLine ('Enter an alphabet') ch = Convert.ToChar (Console.ReadLine ()) switch (Char.ToLower (ch )) {case 'a': Console.WriteLine ('Vowel') break case 'e': Console.WriteLine ('Vowel') break case 'i': Console.WriteLine ('Vowel') break case 'o': Případ přerušení Console.WriteLine ('Vowel') 'u': Výchozí stav přerušení Console.WriteLine ('Vowel'): Přerušení Console.WriteLine ('Not a vowel')}}}}

//Výstup:

Zadejte abecedu
je
Samohláska

Struny

Tětiva Datový typ je členem System.String Třída. Je schopen ukládat znakový typ dat. Můžeme provádět různé operace na Stings, jako jezřetězení, srovnání, získání podřetězce, vyhledávání, ořezávání, nahrazování a mnoho dalších.

Analogie řetězce a řetězce

V C # Tětiva a tětiva jsou ekvivalentní. Řetězec slova je a klíčové slovo a působí jako System.String třída. K deklaraci řetězců můžeme použít kteroukoli z verzí.

Syntax:

string s1 = 'Edureka' // vytvoření řetězce pomocí klíčového slova řetězce String s2 = 'Happy Learning' // vytvoření řetězce pomocí třídy String

Příklad:

pomocí veřejné třídy systému 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 '} řetězec s2 = nový řetězec (ch) Console.WriteLine ( s1) Console.WriteLine (s2)}}

//Výstup:

Edureka
Výukový program Csharp

Řetězcové metody v C #

Metoda Popis
Klon () Používá se k vrácení odkazu na tuto instanci řetězce.
Porovnat (řetězec, řetězec) Slouží k porovnání dvou zadaných řetězcových objektů.
Concat (řetězec, řetězec) Zřetězit dvě zadané instance řetězce.
Obsahuje (řetězec) Vrátí hodnotu označující zadaný dílčí řetězec
Kopírovat (řetězec) Slouží k vytvoření nové instance řetězce se stejnou hodnotou
CopyTo (Int, Char [], Int, Int) Zkopíruje znaky ze zadané pozice
Se rovná (řetězec, řetězec) Určuje, že dva String objekty mají stejnou hodnotu.
Formát (řetězec, objekt) Nahraďte jednu nebo více položek formátu v zadaném řetězci
IndexOf (řetězec) Nahlásí index založený na nule prvního výskytu
Vložit (Int32, řetězec) Vrátí nový řetězec, ve kterém je řetězec vložen do indexu.
IsInterned (řetězec) Označuje, že tento řetězec je ve formátu normalizace Unicode C.
IsNullOrEmpty (řetězec) Označuje, že zadaný řetězec je null nebo prázdný řetězec.
IsNullOrWhiteSpace (řetězec) Používá se k označení, zda je zadaný řetězec null, prázdný,
Připojit se (řetězec, řetězec []) Používá se k zřetězení všech prvků řetězcového pole
LastIndexOf (znak) Nahlásí pozici indexu posledního znaku založeného na nule
LastIndexOfAny (Char []) Nahlásí pozici indexu posledního znaku založeného na nule
Odebrat (Int32) Vrátí nový řetězec, ve kterém jsou všechny znaky
Nahradit (řetězec, řetězec) Vrátí nový řetězec, ve kterém jsou všechny výskyty řetězce
Rozdělit (Char []) Používá se k rozdělení řetězce na podřetězce
StartsWith (řetězec) Slouží ke kontrole, zda je začátek tohoto řetězce
Podřetězec (Int32) Používá se k načtení dílčího řetězce z této instance.
ToCharArray () Zkopíruje znaky v tomto případě do pole Unicode.
ToString () Používá se k vrácení instance String.
Oříznout () Ořízne řetězec


Pole

Podobně jako ostatní programovací jazyky má C # pole. Pole jsou jednoduché datové struktury, které jsou určeny k ukládání stejného datového typu prvků v souvislém umístění paměti.

C # podporuje následující typy polí.

  • Jedno dimenzionální pole
  • Vícedimenzionální pole
  • Zubaté pole

Jedno dimenzionální pole

Single Dimensional Array ukládá prvky ve formě jednoho jediného řádku.

Syntax

int [] arr = new int [5] // vytváření pole

Příklad:

pomocí veřejné třídy systému 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 pro (int i = 0 i 

//Výstup:

10
dvacet
30
40
padesáti

Vícedimenzionální pole

Vícerozměrné pole ukládá prvky ve formě více dimenzí, jako je matice a krychle atd.

Syntax

int val = a [2,3]

Příklad:

pomocí System namespace 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 for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0},{1}] = {2}', i, j, a[i, j]) } } Console.ReadKey() } } } 

//Výstup:

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

Zubaté pole

Jagged Array je prostě řada polí.

Příklad:

pomocí System namespace ArrayApplication {class MyArray {static void Main (string [] args) {int [] [] a = new int [] [] {new int [] {0,0}, new int [] {1,2 }, new int [] {2,4}, new int [] {3, 6}, new int [] {4, 8}} int i, j for (i = 0 i<5 i++) { for (j = 0 j < 2 j++) { Console.WriteLine('a[{0}][{1}] = {2}', i, j, a[i][j]) } } Console.ReadKey() } } } 

//Výstup:

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

Sbírky

Kolekci lze jednoduše považovat za skupinu objektů shromážděných společně, aby bylo možné na shromážděná data použít některé funkce. Operace, které jednou mohou být v kolekci provedeny, jsou:

  • uložit objekt
  • aktualizovat objekt
  • odstranit objekt
  • načíst objekt
  • hledaný objekt a
  • třídit objekt

Druhy sbírek

Existují tři různé možnosti práce se sbírkami. Níže jsou uvedeny tři jmenné prostory:

  • System.Collections.Generic třídy
  • System.Collections třídy
  • System.Collections.Concurrent třídy

System.Collections.Generic Class má následující varianty tříd:

  • Seznam
  • Zásobník
  • Fronta
  • Spojový seznam
  • HashSet
  • Seted set
  • Slovník
  • SortedDictionary
  • Seřazený seznam

The System.Collections třídy jsou považovány za starší třídy. zahrnují následující třídy.

  • ArrayList
  • Zásobník
  • Fronta
  • Hashtable

The System.Collections.Concurrent třídynamespace provides classes for thread-safe operations. Nyní více vláken nevytvoří problém pro přístup k položkám kolekce. třídy v tomto jsou,

  • BlockingCollection
  • ConcurrentBag
  • Souběžný útok
  • Souběžná fronta
  • Souběžný slovník
  • Příčky
  • Příčky
  • OrderablePartitioner

Seznam

The seznam je považována za datovou strukturu dostupnou v System.Collection.Generics jmenný prostor. Může ukládat a načítat prvky. Seznam je schopen ukládat duplicitní prvky.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new List () names.Add ('Sandhya') names.Add ('Arun') names.Add ( 'Prashanth') names.Add ('Kiran') foreach (var name in names) {Console.WriteLine (name)}}}

//Výstup:

Sandhya
Běh
Prashanth
Kiran

Hash Set

C # HashSetkategorie je často zvykláobchod,odnéstnebočíst komponenty. Toneuložit duplikátkomponenty.je to naléhavépoužít HashSet kategorie-limáteuložitvýhradně rozlišovací komponenty . své nachází se v System.Collections.Generic namespace.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new HashSet () names.Add ('Sunil') names.Add ('Amar') names.Add ( 'Pujari') names.Add ('Imran') names.Add ('karan') foreach (var name in names) {Console.WriteLine (name)}}}

//Výstup:

Sunil
Amar
Pujari
Imran
Karan

Seřazená sada

C # SortedSettřídy jsou často zvyklíobchod, odstranit nebo číst elementy . Udržuje vzestupné pořadí aneuložit duplikátelementy.je to rychlépoužít SortedSetkategorie-limáteuložit rozlišovací komponenty a udržovat vzestupné pořadí.svénachází se v System.Collections.Generic namespace.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new SortedSet () names.Add ('Sanjay') names.Add ('Anuradha') names.Add ( 'Praveen') names.Add ('Ravi') names.Add ('Kajol') foreach (var name in names) {Console.WriteLine (name)}}}

//Výstup:

Anuradha
Kajol
Praveen
Ravi
Sanjay

Zásobník

The zásobník je jednoduchá kolekce, která následuje OKRAJ nebo první v poslední proceduře při zpracování prvků v ní uložených.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Stack names = new Stack () names.Push ('Chandan') names.Push ('Pooja') names.Push ( 'James') names.Push ('Rajesh') names.Push ('kumar') foreach (název řetězce ve jménech) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Pop:' + names.Pop ()) Console.WriteLine ('After Pop, Peek element:' + names.Peek ())}}

//Výstup:

kumar
Rajesh
James
Pooja
Chandan
Peek prvek: kumar
Pop: kumar
Po Pop, Peek element: Rajesh

Fronta

Fronta je zcela podobná Stacku, ale jediný rozdíl je v tom, že následuje fronta FIFO nebo princip prvního dovnitř a prvního ven při zpracování prvků v něm uložených.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Queue names = new Queue () names.Enqueue ('Srujan') names.Enqueue ('Prajat') names.Enqueue ( 'John') names.Enqueue ('Raju') names.Enqueue ('Hari') foreach (název řetězce ve jménech) {Console.WriteLine (name)} Console.WriteLine ('Peek element:' + names.Peek () ) Console.WriteLine ('Dequeue:' + names.Dequeue ()) Console.WriteLine ('After Dequeue, Peek element:' + names.Peek ())}}

//Výstup:

Srujan
Prajat
John
Divoký
Den
Peek prvek: Srujan
Dequeue: Srujan
After Dequeue, Peek element: Prajat

Spojový seznam

Propojený seznam je kolekce dynamické paměti. Prvky v seznamu Propojené se ukládají přístupem k paměti z haldy a ukládáním prvků v nepřetržitém pořadí propojením jejich adres.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {var names = new LinkedList () names.AddLast ('Rajat') names.AddLast ('Arun') names.AddLast ( 'Prakash') names.AddLast ('jay') names.AddFirst ('sai') foreach (var name in names) {Console.WriteLine (name)}}}

//Výstup:

sai
Meze
Běh
Prakash
sojka

Slovník

Slovník kategoriepoužíváideahashtable. Ukládá hodnoty napremisaklíče. Obsahujerozlišovacíklíčevýhradně. Podlepomocklíče,jednodušehledat neboodnést prvky.svénachází se v System.Collections.Generic namespace.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {Dictionary names = new Dictionary () names.Add ('1', 'Shiva') names.Add ('2', 'Prasad') names.Add ('3', 'Preetam') names.Add ('4', 'Roy') names.Add ('5', 'Akash') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Výstup:

1 Šiva
2 Prasad
3 Preetam
4 Roy
5Akash

Tříděný slovník

The SortedDictionary kategoriepoužívádesignhashtable. Ukládá hodnoty naideaklíče. Obsahujerozlišovacíklíče a udržuje vzestupné pořadí naideaklíče. Podlepomocklíče,jednodušehledat neboodnést prvky.svénachází se v System.Collections.Generic namespace.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') names.Add ('5', 'Ramesh') names.Add ('3', 'Vidya') names.Add ('2', 'Pallavi') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Výstup:

1 Šiva
2 Prasad
3 Preetam
4 Roy
5Akash

Seřazený seznam

The Seřazený seznam jeanpole párů klíč / hodnota. Ukládá hodnoty napremisaklíče. SortedListkategorieobsahujerozlišovacíklíče a udržuje vzestupné pořadí napremisaklíče. Podlepomocklíče,jsme schopni jednoduševyhledat nebo odebratelementy.svénalezen v System.Collections.Generic jmenný prostor.

Příklad:

using System using System.Collections.Generic public class Edureka {public static void Main (string [] args) {SortedDictionary names = new SortedDictionary () names.Add ('1', 'Arun') names.Add ('4', 'Vishal') names.Add ('5', 'Ramesh') names.Add ('3', 'Vidya') names.Add ('2', 'Pallavi') foreach (KeyValuePair kv in names) {Console. WriteLine (kv.Key + '' + kv.Value)}}}

//Výstup:

1 Arun
2 Pallavi
3 Vidya
4 Vishal
5Ramesh

Struktura

Struktura je uživatelem definovaný datový typ určený k ukládání více prvků různých datových typů. Struktura je deklarována pomocí klíčového slova struktur.

Příklad:

using System struct Books {public string title public string author public string subject public int book_id} public class Edureka {public static void Main (string [] args) {Books Book1 Books Book2 Book1.title = 'C # Programming' Book1.author = ' Ramchandra Kumar 'Book1.subject =' C ++ Programming Tutorial 'Book1.book_id = 95908978 Book2.title =' Telecom Billing 'Book2.author =' Karan 'Book2.subject =' Telecom Billing Tutorial 'Book2.book_id = 18674900 Console.WriteLine ( „Book 1 title: {0}“, Book1.title) Console.WriteLine („Book 1 Author: {0}“, Book1.author) Console.WriteLine („Book 1 subject: {0}“, Book1.subject) Console.WriteLine ('Book 1 book_id: {0}', Book1.book_id) Console.WriteLine ('Book 2 title: {0}', Book2.title) Console.WriteLine ('Book 2 Author: {0}', Book2.author) Console.WriteLine ('Předmět 2 knihy: {0}', Book2.subject) Console.WriteLine ('Kniha 2 book_id: {0}', Book2.book_id) Console.ReadKey ()}}

//Výstup:

Název knihy 1: Programování v C #
Kniha 1 Autor: Ramchandra Kumar
Kniha 1 předmět: C ++ Programming Tutorial
Kniha 1 book_id: 95908978
Název knihy 2: Telecom Billing
Kniha 2 Autor: Karan
Kniha 2 předmět: Výukový program pro fakturaci telekomunikací
Kniha 2 book_id: 18674900

Funkce

Funkce je definována jako blok kódu hlavního kódu. Funkce se používá k provádění příkazů uvedených v bloku kódu. Funkce se skládá z následujících komponent.

  • Název funkce: Jedná se o rozlišovací název, který se používá k uskutečnění volání funkce.
  • Typ vrácení: Určuje datový typ návratové hodnoty funkce.
  • Tělo: Obsahuje spustitelné příkazy.
  • Specifikátor přístupu: Určuje přístupnost funkcí v aplikaci.
  • Parametry: Je to seznam argumentů, které můžeme předat funkci během hovoru.

Syntax

FunctionName () {// tělo funkce // návratové prohlášení}

Příklad:

using System namespace FunctionExample {class Edureka {public string Show (string message) {Console.WriteLine ('Inside Show Function') return message} static void Main (string [] args) {Edureka program = new Edureka () string message = program .Show ('To Edureka') Console.WriteLine ('Welcome' + message)}}}

//Výstup:

Funkce Inside Show
Vítejte v Edurece

Funkce lze provádět třemi různými způsoby:

  • Volání podle hodnoty
  • Volejte podle doporučení
  • Out Parametr

Volání podle hodnoty

V C #, hodnota -typ parametryjsouten průchodreplikapůvodní hodnoty dofunkce místoodkaz. Toneupravitprvní hodnota. Annovela vytvořenav prošelhodnota neníStáříkonkrétní hodnota.v rámcinásledující příklad,mámesložithodnotu v celém rozsahuthevolání.

Příklad:

using 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 Program Edureka = nový program Edureka () Console.WriteLine ('Hodnota před voláním funkce' + val). Show (val) Console.WriteLine ('Hodnota po volání funkce' + val)}}}

//Výstup:

Hodnota před voláním funkce 50
Hodnota uvnitř funkce show 2500
Hodnota po volání funkce 50

Volejte podle doporučení

V metodě Call by Referencena ref klíčové slovo k předání argumentu jako typu odkazu. Předává odkaz argumentů funkci spíše než kopii původní hodnoty. Změny předaných hodnot jsou trvalé a upravit původní hodnota proměnné.

Příklad:

using System namespace CallByReference {class Edureka {public void Show (ref int val) {val * = val Console.WriteLine ('The value inside the show function' + val)} static void Main (string [] args) {int val = 50 Program Edureka = nový Program Edureka () Console.WriteLine ('Hodnota před voláním funkce' + val). Show (ref val) Console.WriteLine ('Hodnota po volání funkce' + val)}}}

//Výstup:

Hodnota před voláním funkce 50
Hodnota uvnitř funkce show 2500
Hodnota po volání funkce 2500

Out Parametr

Out parametrposkytuje ven klíčové slovo pro předání argumentů jako out-type. Je to jako referenční typ, kromě toho, že nevyžaduje inicializaci proměnné před předáním. Musíme použít ven klíčové slovo předat argument jako out-type. Je užitečné, když chceme, aby funkce vrátila více hodnot.

Příklad:

using System namespace 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 () Program Console.WriteLine ('Hodnota před rozdáním proměnné' + val). Show (out val) Console.WriteLine ('Hodnota po obdržení výstupní proměnné' + val)}}}

//Výstup:

Hodnota před rozdáním proměnné 50

Hodnotapo obdržení výstupní proměnné 25

Nyní přejdeme k objektově orientovanému programování

Objektově orientované programování

Objektově orientované programování Systémje paradigma programování založené na konceptu předměty které obsahují datové členy a metody související s nimi. Primárním účelem objektově orientovaného programování je zvýšit flexibilitu a udržovatelnost programů

Vlastnosti objektově orientovaného programování:

  • Důraz je kladen spíše na data než na postup.
  • Programy jsou rozděleny na objekty, což usnadňuje práci s nimi.
  • Datové struktury jsou navrženy tak, aby charakterizovaly objekty.
  • Funkce, které fungují nadata objektu jsou umístěna společně v datové struktuře.
  • Data jsou skrytá a nelze k nim přistupovat pomocí externích funkcí bez svolení.
  • Komunikace mezi objekty může probíhat pomocí funkcí.
  • Přidávání nových dat a funkcí se stalo snadným.
  • Sleduje přístup zdola nahoru v návrhu programu.

Objektově orientovaná paradigmata v C # jsou následující

Výčet v C #

Výčet nebo také nazýván jako výčet v C # se používá k ukládání konstantních hodnot, aniž byste je museli měnit během celého provádění programu C #. Tose používá k ukládání sady pojmenovaných konstant, jako je sezóna, dny, měsíc, velikost atd

Příklad:

pomocí veřejné třídy systému EnumExample {public enum week {pondělí, úterý, středa, čtvrtek, pátek, sobota, neděle} public static void Main () {int x = (int) week.Monday int y = (int) week.Friday Console .WriteLine ('Monday = {0}', x) Console.WriteLine ('Friday = {0}', y)}}

//Výstup:

Pondělí = 0
Pátek = 4

Objektově orientovaný programovací přístup

Objektově orientovaného stylu programování lze dosáhnout pomocí níže předepsaných metod.

Zapouzdření

Zapouzdření je metoda pro kombinaci metody spolu s jejich datové členy.

Příklad:

using System namespace Edureka {class Rectangle {public double length public double width public double GetArea () {return length * width} public void Display () {Console.WriteLine ('Length: {0}', length) Console.WriteLine (' Width: {0} ', width) Console.WriteLine (' Area: {0} ', GetArea ())}} class ExecuteRectangle {static void Main (string [] args) {Rectangle r = new Rectangle () r.length = 50 r. Šířka = 35 r. Display () Console.ReadLine ()}}}

//Výstup:

Délka: 50
Šířka: 35
Plocha: 1750

Abstrakce

Abstrakce je metoda skrýt komplexní kódovací část od uživatele tím, že mu poskytne pouze požadované informace, které potřebuje.

Příklad:

using 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 ...')}} veřejná třída TestAbstract {public static void Main () {Shape ss = new Rectangle () s.draw () s = new Circle () s.draw ()}}

//Výstup:

kreslení obdélníku ...
kreslení kruhu ...

Rozhraní

The rozhraní je úplně podobný Abstrakci. Funkcí rozhraní je skrýt nedůležitá data před uživatelem a poskytnout mu pouze důležitá data, která potřebuje.

Příklad:

pomocí systémového veřejného rozhraní Drawable {void draw ()} public class Rectangle: Drawable {public void draw () {Console.WriteLine ('drawing rectangle ...')}} public class Circle: Drawable {public void draw () {Console .WriteLine ('drawing circle ...')}} public class TestInterface {public static void Main () {Drawable dd = new Rectangle () d.draw () d = new Circle () d.draw ()}}

//Výstup:

kreslení obdélníku ...
kreslení kruhu ...

Polymorfismus

jak funguje casting v Javě

Polymorfismusje kombinace „Poly“ + „Morphs“ což znamená mnoho forem. Je to řecké slovo. To znamená, že segment kódu může nabývat více forem. Máme dva typy polymorfismu.

  • Kompilace časového polymorfismu
  • Polymorfismus za běhu

Příklad:

pomocí veřejné třídy System Animal {public string color = 'white'} public class Dog: Animal {public string color = 'black'} public class TestSealed {public static void Main () {Animal d = new Dog () Console.WriteLine ( d.color)}}

//Výstup:

bílý

Dědictví

Dědictví je proces, ve kterém jeden objekt získává všechny vlastnosti a chování svého nadřazeného objektu automaticky. Můžete znovu použít, rozšířit nebo upravit atributy a chování definované v jiné třídě. nazývá se třída, která dědí členy jiné třídy odvozená třída a třída, jejíž členové jsou zděděni, se nazývá základna třída. Odvozená třída je specializovaná třída pro základní třídu.

Příklad pro dědičnost na jedné úrovni

using System namespace RectangleApplication {class Rectangle {protected double length protected double width public Rectangle (double l, double w) {length = l width = w} public double GetArea () {return length * width} public void Display () {Console. WriteLine ('Délka: {0}', délka) Console.WriteLine ('Šířka: {0}', šířka) Console.WriteLine ('Oblast: {0}', GetArea ())}} třída Deska stolu: Obdélník {soukromý dvojitá cena veřejná deska stolu (dvojitá l, dvojitá w): základní (l, w) {} veřejná dvojitá GetCost () {dvojitá nákladová cena = GetArea () * 70 zpáteční cena} public void Display () {base.Display () Console .WriteLine ('Cena: {0}', GetCost ())}} třída ExecuteRectangle {static void Main (string [] args) {Tabletop t = new Tabletop (4.5, 7.5) t.Display () Console.ReadLine () }}}

//Výstup:

Délka: 4.5
Šířka: 7.5
Plocha: 33,75
Cena: 2362,5

Příklad víceúrovňové dědičnosti

pomocí System namespace InheritanceApplication {class Shape {public void setWidth (int w) {width = w} public void setHeight (int h) {height = h} protected int width protected int height} public interface PaintCost {int getCost (int area)} class Rectangle: Shape, PaintCost {public int getArea () {return (width * height)} public int getCost (int area) {return area * 70}} class RectangleTester {static void Main (string [] args) {Rectangle Rect = new Rectangle () int area Rect.setWidth (5) Rect.setHeight (7) area = Rect.getArea () Console.WriteLine ('Celková plocha: {0}', Rect.getArea ()) Console.WriteLine ('Celkem cena za malování: $ {0} ', Rect.getCost (oblast)) Console.ReadKey ()}}}

//Výstup:

Celková plocha: 35
Celkové náklady na barvu: 2450 USD

Přetížení

Přetížení je situace, kdy máme dva nebo členy deklarované pomocí stejného jména. Přetížení je také možné, když deklarujeme také dvě nebo více metod se stejným názvem. Podívejme se na příklady obou.

Přetížení členů

Příklad:

using 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}} public class TestMemberOverloading { public static void Main () {Console.WriteLine (Edureka.add (12, 23)) Console.WriteLine (Edureka.add (12, 23, 25))}}

//Výstup:

35
60

Přetížení metody

Příklad:

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

//Výstup:

35
33,699997

Převažující

Přepsání je situace, kdy podřízená třída definuje stejnou metodu, kterou definuje také rodič. Pochopme to na malém příkladu.

Příklad:

pomocí veřejné třídy systému Edureka {public virtual void eat () {Console.WriteLine ('Eating')}} veřejná třída Dog: Edureka {public override void eat () {Console.WriteLine ('Eating food')}} přepsání veřejné třídy {public static void Main () {Dog d = new Dog () d.eat ()}}

//Výstup:

Jíst jídlo

Jmenný prostor

The jmenný prostor se v zásadě používá ke zpracování více tříd přítomných v programu. Obor názvů je k dispozici různými způsoby.

  • System.Console: Tady je Systém se stane jmenným prostorem
  • Pro přístup ke třídě oboru názvů musíme použít namespacename.classname.
  • Můžeme použít použitím klíčové slovo také.

Příklad:

using System using First using Second namespace First {public class Edureka {public void sayWelcome () {Console.WriteLine ('Welcome To Edureka')}}} namespace Second {public class Happy_Learning {public void sayWishes () {Console.WriteLine (' Happy Learning ')}}} veřejná třída Obor názvů {public static void Main () {Edureka h1 = new Edureka () Happy_Learning w1 = new Happy_Learning () h1.sayWelcome () w1.sayWishes ()}}

//Výstup:

Vítejte v Edurece
Šťastné učení

Operace se soubory

The operace se soubory dostupné v C # jsou následující:

Úkon Popis
Binární čtečka Čte primitivní data z binárního proudu.
Binární spisovatel Zapisuje primitivní data v binárním formátu.
BufferedStream Dočasné úložiště pro proud bajtů.
Adresář Pomáhá při manipulaci s adresářovou strukturou.
DirectoryInfo Používá se k provádění operací v adresářích.
DriveInfo Poskytuje informace o jednotkách.
Soubor Pomáhá při manipulaci se soubory.
FileInfo Používá se k provádění operací se soubory.
FileStream Slouží ke čtení a zápisu do libovolného umístění v souboru.
MemoryStream Používá se pro náhodný přístup k streamovaným datům uloženým v paměti.
Cesta Provádí operace s informacemi o cestě.
StreamReader Používá se ke čtení znaků z bajtového proudu.
StreamWriter Používá se pro psaní znaků do streamu.
StringReader Používá se ke čtení z řetězcové vyrovnávací paměti.
StringWriter Používá se pro zápis do řetězcové vyrovnávací paměti.

Režim souboru

The Režim souboru je enumerátor, který definuje více metod otevírání souborů. Členy FileMode Enumerator jsou popsány následovně:

  • Připojit: Otevře existující soubor a umístí kurzor na konec souboru, nebo vytvoří soubor, pokud soubor neexistuje.
  • Vytvořit: Je navržen tak, aby vytvořil nový soubor.
  • Vytvořit nový: Je navržen tak, aby určoval operačnímu systému, že by měl vytvořit nový soubor.
  • Otevřeno: Je navržen k otevření existujícího souboru.
  • OpenOrCreate: Je navržen tak, aby určoval operační systém, který by měl otevřít soubor, pokud existuje, jinak by měl vytvořit nový soubor.
  • Zkrátit: Zkrátit otevře existující soubor a zkrátí jeho velikost na nula bajtů.

FileAccess

FileAccess Enumerátor se používá k získání přístupu k určitému souboru. Má následující členy.

  • Číst
  • Psát si
  • Číst psát

FileShare

The Sdílení souborů Enumerátor se používá ke sdílení konkrétního souboru. Má následující členy.

  • Zděděno: Inheritable umožňuje souborovému zpracování předat dědičnost podřízeným procesům.
  • Žádný: Žádný odmítne sdílení aktuálního souboru
  • Číst: Číst umožňuje otevření souboru pro čtení.
  • Číst psát: ReadWrite umožňuje otevření souboru pro čtení a zápis.
  • Psát si: Zápis umožňuje otevření souboru pro zápis.

Události

Událost je obecně známá jako akce generovaná uživatelem. Může to být kliknutí myší a dokonce i jediný stisk klávesy na klávesnici. Podobně programy C # mají také události. Generátor události se nazývá vydavatel a příjemce události se nazývá odběratel.

Vydavatel

NA vydavatel obsahuje definici události a delegáta. The delegát akce asociace je definována v tomto objektu. A vydavatel objekt třídy vyvolá událost a je upozorněn na další objekty.

Odběratel

NA odběratel přijímá akci a poskytuje obsluha události. The delegát ve třídě vydavatele vyvolá metodu / událost psovod třídy předplatitele.

Příklad:

pomocí System namespace Edureka {public delegate string Del (string str) class EventBlock {event Del NewEvent public EventBlock () {this.NewEvent + = new Del (this.WelcomeUser)} public string WelcomeUser (string username) {return 'Welcome to Edureka . '+ username} static void Main (string [] args) {EventBlock obj1 = new EventBlock () string result = obj1.NewEvent (' Happy Learning ') Console.WriteLine (result)}}}

//Výstup:

Vítejte v Edurece. Šťastné učení

Generika

Generika je koncept poskytování členů a metod třídy se zástupci v Run-time. Generiku můžeme definovat pomocí závorky. Podívejme se na následující příklady.

Generika ve třídě

using System namespace Edureka {class GenericClass {public GenericClass (T msg) {Console.WriteLine (msg)}} class Program {static void Main (string [] args) {GenericClass gen = new GenericClass ('This message is from generic class' ) GenericClass genI = nová GenericClass (123) GenericClass getCh = nová GenericClass ('E')}}}

//Výstup:

Tato zpráva pochází z obecné třídy
123
JE

Generika v metodě

pomocí System namespace 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 zpráva pochází z obecné metody ') genC.Show (321) genC.Show (' H ')}}}

//Výstup:

Tato zpráva pochází z obecné metody
321
H

Delegáti

The Delegát funguje jako odkaz na metodu. V zásadě je to stejné jako a ukazatel funkce v C a C ++, ale mnohem lepší a typově bezpečné. Delegát v statická metoda zapouzdřuje pouze metodu. Zatímco delegát v EU instance metoda zapouzdřuje metodu i instanci. Nejlepší použití delegáta je použít jako událost.

Příklad:

pomocí System delegate int Calculator (int n) public class Edureka {static int number = 25 public static int add (int n) {number = number + n return number} public static int mul (int n) {number = number * n return number} public static int getNumber () {return number} public static void Main (string [] args) {Calculator c1 = new Calculator (add) Calculator c2 = new Calculator (mul) c1 (20) Console.WriteLine ('After calculator jeden delegát, nové číslo je: '+ getNumber ()) c2 (3) Console.WriteLine (' Po kalkulačce dva delegáti je nové číslo: '+ getNumber ())}}

//Výstup:

Po kalkulačce jednoho delegáta je nové číslo: 45
Po kalkulačce dva delegáti je nové číslo: 135

Odraz

Reflection je vyžadován k získání metadat za běhu. Reference je k dispozici v System.Reflection jmenný prostor. Vyžaduje provedení následujících tříd.

  • Typ
  • MemberInfo
  • ConstructorInfo
  • MethodInfo
  • FieldInfo
  • PropertyInfo
  • TypeInfo
  • EventInfo
  • Modul
  • Shromáždění
  • AssemblyName
  • Ukazatel

Typová třída

Třída typu C # představuje deklarace typů pro typy tříd, typy rozhraní, typy výčtu, typy polí, typy hodnot

Vlastnosti typu

Níže je uveden seznam důležitých vlastností tříd Type.

Vlastnictví Popis
Shromáždění Získá Assembly pro tento typ.
AssemblyQualifiedName Získá kvalifikovaný název Assembly pro tento typ.
Atributy Získá atributy spojené s typem.
BaseType Získá základní nebo nadřazený typ.
Celé jméno Získá plně kvalifikovaný název typu.
IsAbstract se používá ke kontrole, zda je typ Abstrakt.
IsArray se používá ke kontrole, zda je typ pole.
IsClass se používá ke kontrole, zda je typ Class.
IsEnum se používá ke kontrole, zda je typ Enum.
IsInterface se používá ke kontrole, zda je typem Rozhraní.
IsNested se používá ke kontrole, zda je typ Vnořený.
Je primitivní se používá ke kontrole, zda je typ primitivní.
IsPointer se používá ke kontrole, zda je typ Pointer.
IsNotPublic se používá ke kontrole, zda typ není Public.
IsPublic slouží ke kontrole, zda je typ Veřejný.
Je uzavřeno se používá ke kontrole, zda je typ uzavřený.
IsSerializable se používá ke kontrole, zda je typ Serializovatelný.
MemberType se používá ke kontrole, zda je typ Členský typ vnořeného typu.
Modul Získá modul typu.
název Získá název typu.
Jmenný prostor Získá obor názvů typu.
Vlastnictví Popis
GetConstructors () Vrátí všechny veřejné konstruktory pro Type.
GetConstructors (BindingFlags) Vrátí všechny konstruktory pro Type se zadanou BindingFlags.
GetFields () Vrátí všechna veřejná pole pro Type.
GetFields (BindingFlags) Vrátí všechny veřejné konstruktory pro Type se zadanou BindingFlags.
GetMembers () Vrátí všechny veřejné členy pro Type.
GetMembers (BindingFlags) Vrátí všechny členy pro Type se zadanou BindingFlags.
GetMethods () Vrátí všechny veřejné metody pro Type.
GetMethods (BindingFlags) Vrátí všechny metody pro Type se zadanou BindingFlags.
GetProperties () Vrátí všechny veřejné vlastnosti pro Type.
GetProperties (BindingFlags) Vrátí všechny vlastnosti pro Type se zadanou BindingFlags.
GetType () Získá aktuální typ.
GetType (řetězec) Získá Type pro dané jméno.

Příklady reflexe:

Získejte typ

Příklad:

pomocí veřejné třídy systému GetType {public static void Main () {int a = 10 Type type = a.GetType () Console.WriteLine (type)}}

//Výstup:

System.Int32

Získejte shromáždění

Příklad:

pomocí systému pomocí veřejné třídy System.Reflection GetAssembly {public static void Main () {Type t = typeof (System.String) Console.WriteLine (t.Assembly)}}

//Výstup:

System.Private.CoreLib, verze = 4.0.0.0, kultura = neutrální, PublicKeyToken = 7cec85d7bea7798e

Informace o typu tisku

Příklad:

pomocí systému pomocí veřejné třídy 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)}}

//Výstup:

Skutečný
Nepravdivé
Nepravdivé

Tisknout konstruktéry

Příklad:

using System using System.Reflection public class PrintConstructors {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Constructors of {0} type ...', t) ConstructorInfo [] ci = t .GetConstructors (BindingFlags.Public | BindingFlags.Instance) foreach (ConstructorInfo c v ci) {Console.WriteLine (c)}}}

//Výstup:

Konstruktory typu System.String ...
Prázdný herec (Char [])
Prázdný .ctor (Char [], Int32, Int32)
Prázdný herec (Char *)
Prázdný .ctor (Char *, Int32, Int32)
Prázdný .ctor (SByte *)
Prázdný .ctor (SByte *, Int32, Int32)
Void .ctor (SByte *, Int32, Int32, System.Text.Encoding)
Void .ctor (Char, Int32)
Void .ctor (System.ReadOnlySpan`1 [System.Char])

Metody tisku

Příklad:

using System using System.Reflection public class PrintMethods {public static void Main () {Type t = typeof (System.String) Console.WriteLine ('Methods of {0} type ...', t) MethodInfo [] ci = t .GetMethods (BindingFlags.Public | BindingFlags.Instance) foreach (MethodInfo m v ci) {Console.WriteLine (m)}}}

//Výstup:

Metody typu System.String ...
Nahradit System.String (System.String, System.String)
System.String [] Rozdělit (Char, System.StringSplitOptions)
System.String [] Rozdělit (Char, Int32, System.StringSplitOptions)
System.String [] Split (Char [])
System.String [] Rozdělit (Char [], Int32)
System.String [] Split (Char [], System.StringSplitOptions)
System.String [] Rozdělit (Char [], Int32, System.StringSplitOptions)
System.String [] Rozdělit (System.String, System.StringSplitOptions)
System.String [] Rozdělit (System.String, Int32, System.StringSplitOptions)
System.String [] Split (System.String [], System.StringSplitOptions)
System.String [] Split (System.String [], Int32, System.StringSplitOptions) ......

Tisknout pole

Příklad:

pomocí systému pomocí veřejné třídy 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)}}}

//Výstup:

Pole typu System.String ...
System.String Empty

Pojďme nyní k některým pokročilým programovacím konceptům C #

Pokročilé koncepty C #

Anonymní funkce

Funkce, která postrádá konkrétní název, se nazývá Anonymní Funkce V C # jsou k dispozici dva typy anonymních funkcí

  • Lambda výrazy
  • Anonymní metody

Příklad:

using System namespace LambdaExpressions {class Edureka {delegate int Square (int num) static void Main (string [] args) {Square GetSquare = x => x * x int j = GetSquare (25) Console.WriteLine ('Square:' + j)}}}

//Výstup:

Čtverec: 625

Anonymní metody

The anonymní metoda poskytuje stejnou funkcionalitu jako a výraz lambda, kromě toho, že nám umožňuje ignorovat seznam parametrů.

Příklad:

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

//Výstup:

Toto je anonymní funkce

Vícevláknové

Vícevláknový proces je proces, při kterém je vytvořeno a přiřazeno více vláken pro různé úkoly. to šetří čas prováděním více úloh najednou. Třída multithreading je k dispozici v System.Threading jmenný prostor.

Obor názvů System.Threading

The System.Threading jmenný prostor obsahuje třídy a rozhraní pro usnadnění multithreadingu. Poskytuje třídy pro synchronizaci prostředku vlákna. Seznam běžně používaných tříd je uveden níže:

  • Vlákno
  • Mutex
  • Časovač
  • Monitor
  • Semafor
  • ThreadLocal
  • ThreadPool
  • Nestálý

Proces a vlákno

Proces je ve skutečnosti a aplikace a je považován za těžká váha součástka. Na druhou stranu je vlákno jediné modul celé aplikace. to je lehká váha ve srovnání s procesem

Životní cyklus vlákna

Každé vlákno má svůj životní cyklus. Životní cyklus vlákna je definován ve třídě System.Threading.Thread. Následuje fáze životního cyklu libovolného vlákna.

  • Nezačal
  • Runnable (Ready to run)
  • Běh
  • Nelze spustit
  • Mrtvý

Třída Thread poskytuje následující vlastnosti a metody následovně.

Vlastnosti závitu

Vlastnictví Popis
CurrentThread vrací instanci aktuálně běžícího vlákna.
Je naživu zkontroluje, zda je aktuální vlákno naživu nebo ne.
IsBackground Získání / nastavení hodnoty aktuálního vlákna je na pozadí nebo ne.
ManagedThreadId se používá k získání jedinečného ID pro aktuálně spravované vlákno.
název se používá k získání nebo nastavení názvu aktuálního vlákna.
Přednost se používá k získání nebo nastavení priority aktuálního vlákna.
Stav vlákna se používá k vrácení hodnoty představující stav vlákna.

Metody závitů

Metoda Popis
Potrat() se používá k ukončení vlákna. Vyvolává ThreadAbortException.
Přerušit() se používá k přerušení vlákna, které je ve stavu WaitSleepJoin.
Připojit se() slouží k blokování všech volajících vláken, dokud se toto vlákno neukončí.
ResetAbort () se používá ke zrušení požadavku Abort pro aktuální vlákno.
Životopis() se používá k obnovení pozastaveného vlákna. Je to zastaralé.
Spánek (Int32) slouží k pozastavení aktuálního vlákna na zadané milisekundy.
Start() změní aktuální stav vlákna na Runnable.
Pozastavit() pozastaví aktuální vlákno, pokud není pozastaveno. Je to zastaralé.
Výtěžek() se používá k získání provedení aktuálního vlákna do jiného vlákna.

Příklad hlavního vlákna

using System using System.Threading public class Edureka {public static void Main (string [] args) {Thread t = Thread.CurrentThread t.Name = 'MainThread' Console.WriteLine (t.Name)}}

//Výstup:

MainThread

Zpracování výjimek

The výjimka je chyba vyvolaná programem za běhu. Provádíme zpracování výjimek, abychom náš program osvobodili od výjimek.

Výjimka Popis
System.DivideByZeroException Chyba generovaná dělením čísla nulou.
System.NullReferenceException zpracovává chybu generovanou odkazem na objekt null.
System.InvalidCastException zpracovává chybu generovanou neplatným typovým obsazením.
System.IO.IOException zpracovává chyby vstupu / výstupu.
System.FieldAccessException Chyba generovaná neplatným soukromým / chráněným přístupem.

V C # používáme k provedení 4 klíčová slova zpracování výjimek:

  • Snaž se
  • úlovek
  • konečně, a
  • házet
Příklad:
pomocí veřejné třídy systému EdurekExample {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} Console.WriteLine („Tato zpráva pochází z bloku úlovků“)}}

//Výstup:

System.DivideByZeroException: Pokus o dělení nulou.
na ExExaEdurekample.Main (String [] args) v F: C # TutorialC # ProgramyConsoleApp1ConsoleApp1Program.cs: řádek 10
Tato zpráva pochází z bloku chycení

Příklad přizpůsobené výjimky

using System public class InvalidAgeException: Exception {public InvalidAgeException (String message): base (message) {}} public class Customized {static void validate (int age) {if (age<18) { throw new InvalidAgeException('Sorry, Age is expected to be greater than 18') } } public static void Main(string[] args) { try { validate(12) } catch (InvalidAgeException e) { Console.WriteLine(e) } Console.WriteLine('Catch block is being executed now.') } } 

//Výstup:

InvalidAgeException: Je nám líto, věk by měl být větší než 18
na Customized.validate (Int32 age) v F: C # TutorialC # ProgramyConsoleApp1ConsoleApp1Program.cs: řádek 18
na Customized.Main (String [] args) v F: C # TutorialC # ProgramyConsoleApp1ConsoleApp1Program.cs: řádek 23
Chybí blokování.

Nakonec zablokujte příklad

pomocí System public class FinalExecption {public static void Main (string [] args) {try {int a = 10 int b = 0 int x = a / b} catch (Exception e) {Console.WriteLine (e)} konečne {Console .WriteLine ('Konečně je spuštěn blok')} Console.WriteLine ('Je spuštěn blok pro zachycení')}}

//Výstup:

System.DivideByZeroException: Pokus o dělení nulou.
na FinalExecption.Main (String [] args) v F: C # TutorialC # ProgramyConsoleApp1ConsoleApp1Program.cs: řádek 10
Nakonec je blok spuštěn
Blokování úlovků je provedeno

Podpis výjimky systému

[SerializableAttribute] [ComVisibleAttribute (true)] veřejná třída SystemException: Výjimka

Konstruktory systémových výjimek

Stavitel Popis
SystemException () Používá se k inicializaci nové instance třídy SystemException.
SystemException

(SerializationInfo, StreamingContext)

Používá se k inicializaci nové instance třídy SystemException se serializovanými daty.
SystemException (řetězec) Používá se k inicializaci nové instance třídy SystemException se zadanou chybovou zprávou.
SystemException (String, Exception) Používá se k inicializaci nové instance třídy SystemException se zadanou chybovou zprávou a odkazem na vnitřní výjimku, která je příčinou této výjimky.

Vlastnosti systémové výjimky

Vlastnictví Popis
Data Používá se k získání kolekce párů klíč / hodnota, které poskytují další uživatelem definované informace o výjimce.
HelpLink Používá se k získání nebo nastavení odkazu na soubor nápovědy spojený s touto výjimkou.
HResult Používá se k získání nebo nastavení HRESULT, kódované číselné hodnoty, která je přiřazena konkrétní výjimce.
Vnitřní výjimka Používá se k získání instance výjimky, která způsobila aktuální výjimku.
Zpráva Používá se k získání zprávy, která popisuje aktuální výjimku.
Zdroj Používá se k získání nebo nastavení názvu aplikace, která chybu způsobuje.
StackTrace Používá se k získání řetězcové reprezentace okamžitých snímků v zásobníku volání.
TargetSite Používá se k získání metody, která vyvolá aktuální výjimku.

Metody systémových výjimek

Metody Popis
Se rovná (objekt) Slouží ke kontrole, zda je zadaný objekt stejný jako aktuální objekt nebo ne.
Dokončit() Používá se k uvolnění prostředků a provádění operací čištění.
GetBaseException () Používá se k získání výjimky root.
GetHashCode () Používá se k získání hash kódu.
GetObjectData

(SerializationInfo, StreamingContext)

Používá se k získání dat objektu.
GetType () Používá se k získání běhového typu aktuální instance.
MemberwiseClone () Používá se k vytvoření mělké kopie aktuálního objektu.
ToString () Používá se k vytvoření a vrácení řetězcové reprezentace aktuální výjimky.

Příklad systémové výjimky

pomocí System namespace CSharpProgram {class SystemExceptionExample {static void Main (string [] args) {try {int [] arr = new int [5] arr [10] = 25} catch (SystemException e) {Console.WriteLine (e)} }}}

//Výstup:

System.IndexOutOfRangeException: Index byl mimo hranice pole.
na CSharpProgram.SystemExceptionExample.Main (String [] args) v F: C # TutoriálC # ProgramyConsoleApp1ConsoleApp1Program.cs: řádek 11

Synchronizace

Synchronizace může být technika, která umožňuje přístup k prostředku po určitou dobu pouze 1 vláknu. Žádné alternativní vlákno se nepřeruší, dokud určené vlákno nedokončí svůj úkol.

V programu s více vlákny jsou vlákna povolenapro přístup k jakémukoli zdroji prozadané provedeníčas. Vlákna sdílejí prostředky a provádějí se asynchronně. Přístup ke sdíleným zdrojům (data)může být důležitým úkolemže obecněmohl zastavitsystém.máme tendenci to ovlivňovatvytvářením vláken synchronním způsobem.

Příklad bez synchronizace

using System using System.Threading class 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() } } 

//Výstup:

jeden
jeden
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10

Příklad se synchronizací

pomocí systému pomocí třídy 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() } } 

//Výstup:

jeden
2
3
4
5
6
7
8
9
10
jeden
2
3
4
5
6
7
8
9
10

Nové vlastnosti

Microsoft přidal do jazyka C # mnoho nejnovějších funkcí, některé z nich jsou uvedeny níže.

C # 6.0

  • Použití statické směrnice
  • Filtry výjimek
  • Čekejte na úlovky / konečně bloky
  • Automatické inicializátory vlastností
  • Výchozí hodnoty pro vlastnosti pouze pro získání
  • Členové s výrazem
  • Nulový propagátor
  • Řetězcová interpolace
  • Jméno operátora
  • Inicializátor slovníku
  • Překladač jako služba (Roslyn)

C # 7.0

  • Shoda vzoru
  • N-tice
  • Dekonstrukce
  • Místní funkce
  • Oddělovač číslic
  • Binární literály
  • Ref se vrací a místní
  • Konstruktory a finalizátory vyjádřené tělesem
  • Getters a setters s výrazem
  • Out proměnné
  • Zobecněné asynchronní návratové typy

C # 7.1

  • Asynchronní hlavní
  • Výchozí výrazy

Dotazy na rozhovor založené na C #

Důležité otázky k pohovoru založené na programovacím jazyce C # najdete v této aktualizaci .

S tímto se dostáváme na konec tohoto článku „C # Tutorial“. Doufám, že jste pochopili důležitost datových struktur, syntaxe, funkčnosti a operací prováděných s jejich využitím. Nyní, když jste pochopili základy programování v C # prostřednictvím tohotoC # výuka, podívejte se na poskytované školení od společnosti Edureka na mnoha technologiích, jako je Java, Jaro a mnohonavíc získala důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě otázka pro nás? Uveďte to v sekci komentářů tohoto blogu „C # Tutorial“ a my se vám ozveme co nejdříve.