Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
C# áttekintés
2
Bevezető Objektum-orientált nyelv Az újdonságok kerülnek bemutatásra
A hasonló dolgok csak említés szintjén Pl. namespace, class A lényeges újdonságok részletes Pl. property C# áttekintés
3
„Hasonlóságok” Namespace, using Class, struct, interface, enum
A C++-hoz képest van különbség köztük! „Többszörös öröklődés” nem támogatott class child : base { … } Metódusok, attribútumok, … Utasítások if-else, switch, for, while, … Automatikus memória felszabadítás C# áttekintés
4
Hasonló, de … Program belépési pontja Konzolra írás, konzolról olvasás
static void Main(string[] args) Konzolra írás, konzolról olvasás Console.Write(“x = {0}”, x); Console.WriteLine(…) x = Console.Read(); Formátum példa "FormatString {0} {1} \n {2} …", arg1, arg2, arg3 region C# áttekintés
5
Típusok C# áttekintés
6
Típusok System.Int32 – int System.Boolean – bool …
Ugyanazok, az int vagy a bool kulcsszó csak alias az System.Int32 vagy System.Boolean-ra C# áttekintés
7
Típusok Nullable Nullable<T> vagy T? jelelölés, ahol T típus
HasValue és GetValue metódusok C# ?? operátor C# áttekintés
8
const vs readonly Const – compile-time konstans
Readonly – runtime konstansok definiálásra is alkalmas Pl.: public static readonly uint timeStamp = (uint)DateTime.Now.Ticks; Ez a kódrészlet public const … esetén fordítási hibát eredményezne const esetén a member csak a deklaráció helyén kaphat értéket, ameddig a readonly esetében a konstruktorban is C# áttekintés
9
Láthatóságok private protected internal protected internal public
Csak a típuson belül protected Csak az típuson és a leszármazottjain belül internal Csak az adott assembly-n belül protected internal Protected VAGY Internal public Korlátlan hozzáférés C# áttekintés
10
Tulajdonságok (properties)
get, set kulcsszavak Getter és setter metódusok generálódnak a háttérben Auto-generated Csak olvasható, írható/olvasható tulajdonságok Alkalmazhatók a meglévő láthatóságok C# áttekintés
11
Paraméterek, paraméter átadás
Opcionális paraméterek A paraméterlista végén Sintaxis [Optional] attribútum VAGY Típus változónév = defaultÉrék Függvényhívás Az opcionális argumentumok elhagyhatók a hívásnál Named arguments paraméterNév: paraméterérték, … C# áttekintés
12
Paraméterek, paraméter átadás
Ref kulcsszó Out kulcszó Érték típusok referenciaként adhatóak át metódusoknak C# áttekintés
13
Kollekciók IEnumerable és IEnumerable<T>
Az összes kollekción, ami implementálja ezt az interfészt, végig lehet iterálni Gyakran használt ilyen kollekciók List<T> Egyszerű indexelhető lista Dictionary<TKey, TValue> Szótár „kulcs, érték” párok tárolására ObservableCollection<T> CollectionChanged esemény hívódik meg minden kollekción történt változásról (hozzáadás, törlés … ) C# áttekintés
14
Kollekciók Érdemes a generikus kollekciókat használni a típusbiztonság miatt Léteznek szálbiztos kollekciók is a System.Collections.Concurrent névtérben C# áttekintés
15
Initializers struct Cat { int Age; string Name; } Object initializer
Cat cat = new Cat { Age = 10, Name = "Fluffy" }; Collection initializer A kollekciónak implementálnia kell az IEnumerable interfészt List<Cat> cats = new List<Cat> { new Cat(){Name="S", Age=8 }, new Cat(){Name="A", Age=14 } }; C# áttekintés
16
A partial kulcsszó Lehetővé teszi egy osztály, struktúra, interfész vagy metódus több fájlba történő szétdarabolását. FONTOS: az összetartozó partial elemeknek egy assembly-ben kell lenniük. Tipikus felhasználás: UI és code-behind Lásd; a következő órán C# áttekintés
17
A sealed kulcssszó Osztályon alkalmazva megakadályozza, hogy az adott osztályból származtatni lehessen. sealed class SealedClass { public int x; public int y; } Megemlítés: metódusokra is használható C# áttekintés
18
Delegate „Erősen típusos függvény pointer”
A System.MulticastDelegate és System.Delegate osztályok leszármazottjai Csak a fordító származtathat belőlük Eseménykezelők is delegate-ek Függvény pointer C-ben double log2(double x) { return log(x) / log(2); } typedef double (*fgvtip)(double); fgvtip fgv = log2; double res = (*fgv)(17); C# áttekintés
19
Speciális delegate-ek
Action Meghatározott paraméterlistával ellátott és visszatérési érték nélküli Action a = „példányosítás”; Action<int> a = „ példányosítás”; Func Meghatározott visszatérési értékkel és paraméterlistával ellátott Func<int, bool> f = „ példányosítás”; C# áttekintés
20
Speciális delegate-ek
Predicate bool visszatérési értékkel és egyetlen paraméterrel Predicate<int> p = „példányosítás” EventHandler<TEventArgs> delegate void EventHandler<TEventArgs> C# áttekintés
21
Események Küldő/fogadó osztály, objektum
Feliratkozás (+=), leiratkozás (-=) operátorokkal 1 eseményre több feliratkozó lehet, illetve egy feliratkozó feliratkozhat több eseményre is Pl.: gombnyomás esemény a UI-on C# áttekintés
22
Események class A { public event EventHandler AnEvent; } A a = new A(); a.AnEvent += „eseménykezelő” a.AnEvent -= „eseménykezelő” C# áttekintés
23
Using utasítás IDisposable interfész
Determinisztikus erőforrás felszabadítás GC nem tudja felszabadítani a nem menedzselt erőforrásokat (DB kapcsolat, fájl handle) A using biztosítja, hogy az Dispose() metódus megfelelően legyen meghívva a példányosított objektumon még akkor is, ha kivétel dobódik egy try-finally generálódik a háttérben C# áttekintés
24
Bővítő metódusok (extension methods)
Típus kiterjesztése a típus módosítása nélkül Speciális statikus metódus egy statikus osztályban A metódus paraméter listája elején a this kulcsszó határozza meg a kiterjesztett típust Névtér explicit importálása szükséges (using direktíva) C# áttekintés
25
Lambda kifejezések Lokálisan létrehozható függvény
Argumentumként átadhatók vagy visszaadhatóak egy metódus által Előnye: hozzáfér a lokális objektumokhoz Tipikus felhasználás LINQ-ben Paraméter lista: (x, y …) Lambda operátor: => Függvénytörzs: { … } Pl.: (x, y) => { return x + y; } C# áttekintés
26
LINQ Language Integrated Queries Function vagy query szintaxis
Extension Method + Lambda kifejezés Function vagy query szintaxis LINQ interfész + LINQ provider-ek LINQ2SQL: SQL lekérdezések (Entity Fw) LINQ2Objects: objektumgráfok feldolgozása LINQ2XML: XML feldolgozása C# áttekintés
27
Feladat, házi feladat BookShopConsole
Implementáljuk a Customer funkcionalitásokat elejétől a végéig Entitás kiegészítése CustomerRepository implementálása Kontroller kiegészítése Demóadatok betöltése indításkor Kontroller felügyeli hogy egyedi felhasználó nevek legyenek Customer listázás, lekérés név alapján, hozzáadás C# áttekintés
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.