Podstawy C# Grupa .NET PO
Agenda Typy stałe Typy Referencyjne Tablice Operatory Podstawowe typy danych Rzutowania Typy Referencyjne Tablice Operatory Kontrola przepływu Metody Try-catch-finally
Geneza języka C# Język C, C++ Java Visual Basic Język C#
Platformy .NET
CTS - Common Type System
Typy C# - język silnie typowany Nie można zmieniać typu po deklaracji Kompilator pilnuje poprawności typów… …a później robi to CLR (Common Language Runtime) Nie można zmieniać typu po deklaracji Nie dotyczy typów dynamicznych (dynamic) Podział typy proste (typy skalarne) typy referencyjne wskaźniki (unsafe code)
Typy proste
Podstawowe typy danych Integer Types Floating-Point Types Decimal Boolean Character Null
Typ: liczby całkowite byte < short < int < long sbyte, byte, char, short, ushort, int, uint, long, ulong
Integer Types
Typy: Liczby zmiennoprzecinkowe float (System.Single) double (System.Double) Precyzja float 7 cyfr double 15-16 cyft
Floating-Point Types
Decimal
Przykładowe użycie typów int i = 5; float f = 1.5F; double d = 1.3534534d; string name = "Michal"; char ch = 'a';
Przed użyciem trzeba zainicjować // deklaracja int liczba; // inicjalizacja liczba = new int(); // domyślnie zero (0) liczba = 0; // deklaracja i inicjacja int liczba = new int(); int liczba = 0;
Var Kompilator sam wykrywa właściwy typ zmiennej tylko tam gdzie jest deklaracja z inicjacją Rozwiązanie dla leniwych Często poprawia czytelność kod int a = 5; // int int b = a; // int var c = 10; // int var d = c; // int var s = "Kurs C#"; // string SqlConnection conn = new SqlConnection(); var conn = new SqlConnection(); var conn = Namespace.Class.Method(new Class(param1), param2));
Literal Values int i = 12; float a = 1.12345f; double b = 2.12345d; decimal c = 3.12345m;
Typ: Boolean bool (System.Boolean) Wartości: true, false
Typ: Char Reprezentuje 16-bit znaki Unicode Dokładnie 1 znak char literka = 'A'; char znak = '5'; char inicjaly = 'wp'; //error int kod = znak; //char -> int
Character Type – Escape Characters 1
Character Type – Escape Characters 2
Strings string = ciąg znaków = tekst string tekst = ”cos tam”; string src1 = ”c:\\moje dokumenty”; string src2 = @”c:\moje dokumenty”;
Strings - @
Zupełnie nowy string Strings are Immutable string str = ”jakis tekst”; str = str + ”... Dodatkowy tekst”; Zupełnie nowy string
String.Format Bardzo wygodne formatowanie napisów Napisy Liczby Waluty Daty String.Format(„Witaj {0}!”, imie); String.Format(„Cena: {0:C2}.”, kwota); String.Format(„Jest {0:yyyy} rok., miesiąc: {0:MM}”, data);
Type: Null 2 Null – brak wartości Przypisanie wartości null do stringa nie oznacza, że jest on pusty (””) tylko, że nie ma wartości! 2
Konwersja i rzutowania Explicit Cast Implicit Conversion Type Conversion Parse() i TryParse()
Explicit Cast Operator rzutowania
Implicit Conversion rzutowanie
Jaka będzie wartość boolean? Type Conversion W przypadku niepowodzenia zwraca wyjątek. Jaka będzie wartość boolean? TRUE
Parse() i TryParse() Parse() – konwertuje ciąg znaków na typ numeryczny (w przypadku niepowodzenia wyrzuca wyjątek) TryParse() – jak wyżej (nie wyrzuca wyjątku, zwraca wartość false)
Operatory Około 50 operatorów Podstawowe Mnożniki Przypisanie +, -, ++, -- Mnożniki *, /, % Przypisanie =, +=, -= Warunkowe ==, <, >, <=, >=, !=, !, &&, || Inne [], new, (), is, as, =>
Typy referencyjne
Typy referencyjne Czyli co? Referencja do danyc class interface delegate array Referencja do danyc
Klasy vs Object Klasa Definicja Obiekt Powołana do życia instancja klasy class Person { public string Name { get; set; } public int Age { get; set; } public Person() Name = string.Empty; Age = 0; } Person p1 = new Person(); p1.Name = "Jan Nowak"; p1.Age = 60; var p2 = new Person(); var p3 = p1;