360 likes | 586 Views
Podstawy C#. Grupa .NET PO. Agenda. Typy stałe Podstawowe typy danych Rzutowania Typy Referencyjne Tablice Operatory Kontrola przepływu Metody Try-catch-finally. Język C#. Geneza języka C#. Język C, C++. Java. Visual Basic. Platformy .NET.
E N D
Podstawy C# Grupa .NET PO
Agenda • Typy stałe • Podstawowe typy danych • Rzutowania • Typy Referencyjne • Tablice • Operatory • Kontrola przepływu • Metody • Try-catch-finally
Język C# Geneza języka C# Język C, C++ Java Visual Basic
Typy • C# - język silnie typowany • 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)
Podstawowe typy danych Integer Types Floating-PointTypes Decimal Boolean Character Null
Typ: liczby całkowite • byte < short < int < long • sbyte, byte, char, short, ushort, int, uint, long, ulong
Typy: Liczby zmiennoprzecinkowe • float (System.Single) • double (System.Double) • Precyzja • float 7 cyfr • double 15-16 cyft
Przykładowe użycie typów inti = 5; float f = 1.5F; double d = 1.3534534d; string name = "Michal"; char ch = 'a';
Przed użyciem trzeba zainicjować // deklaracja intliczba; // inicjalizacja liczba = newint(); // domyślnie zero (0) liczba = 0; // deklaracja i inicjacja intliczba = newint(); intliczba = 0;
Var int a = 5; // int intb = a; // int varc = 10; // int vard = c; // int vars = "Kurs C#"; // string SqlConnectionconn = newSqlConnection(); varconn = newSqlConnection(); varconn = Namespace.Class.Method(newClass(param1), param2)); • Kompilator sam wykrywa właściwy typ zmiennej • tylko tam gdzie jest deklaracja z inicjacją • Rozwiązanie dla leniwych • Często poprawia czytelność kod
LiteralValues inti = 12; float a = 1.12345f; double b = 2.12345d; decimal c = 3.12345m;
Typ: Boolean bool(System.Boolean) Wartości: true, false
Typ: Char char literka = 'A'; char znak = '5'; char inicjaly = 'wp'; //error int kod = znak; //char -> int Reprezentuje 16-bit znaki Unicode Dokładnie 1 znak
Strings stringtekst = ”cos tam”; stringsrc1 = ”c:\\moje dokumenty”; • stringsrc2 = @”c:\moje dokumenty”; string = ciąg znaków = tekst
StringsareImmutable stringstr = ”jakis tekst”; str = str + ”... Dodatkowy tekst”; Zupełnie nowy string
String.Format String.Format(„Witaj {0}!”, imie); String.Format(„Cena: {0:C2}.”, kwota); String.Format(„Jest {0:yyyy} rok., miesiąc: {0:MM}”, data); • Bardzo wygodne formatowanie napisów • Napisy • Liczby • Waluty • Daty
Type: Null Przypisanie wartości null do stringa nie oznacza, że jest on pusty (””) tylko, że nie ma wartości! 2 Null – brak wartości
Konwersja i rzutowania ExplicitCast Implicit Conversion Type Conversion Parse() i TryParse()
ExplicitCast Operator rzutowania
ImplicitConversion rzutowanie
TypeConversion • Jaka będzie wartość boolean? • TRUE W przypadku niepowodzenia zwraca wyjątek.
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 • =, +=, -= • Warunkowe • ==, <, >, <=, >=, !=, !, &&, || • Inne • [], new, (), is, as, =>
Typy referencyjne • Czyli co? • class • interface • delegate • array • Referencja do danyc
Klasy vs Object • Obiekt • Powołana do życia instancja klasy classPerson { publicstring Name { get; set; } publicint Age { get; set; } publicPerson() { Name = string.Empty; Age = 0; } } Person p1 = newPerson(); p1.Name = "Jan Nowak"; p1.Age = 60; varp2 = newPerson(); varp3 = p1; • Klasa • Definicja