static void Main(string[] args) { Student student = new Student(); student.Age = 16; //metody statyczne i niestatyczne student.UczelniaNiestatyczna(); Student.UczelniaStatyczna(); //dostęp do uczelni statycznej tylko bezpośrednio, nie dla instancji klasy Console.Write("Wpisz tekst co się ma wyświetlić: "); Console.Beep(); //robi beep, dźwięk systemu string txt = Console.ReadLine(); Console.WriteLine(txt); Console.ReadKey(); // zatrzymuje konsole w celu zobaczenia wyniku string[] seasons = new[] { "Wiosna", "Lato", "Jesień", "Zima" }; //tak ładnie int[] number = new int[10]; //tak ładnie Console.WriteLine("Rozmiar tablicy przed zmianami " + number.Length); Array.Resize(ref number, 20); //przykład gotowej metody do zmiany tablicy tak jak w JAVA, boli C++ co?? xD Console.Write("Rozmiar tablicy po ArrayResize " + number.Length); // string[] seasons = new[4] { "Wiosna", "Lato", "Jesień", "Zima" }; tak nie ładnie, tak nie robimy Console.WriteLine("Podstawowa tablica ma długość: " + number.Length); Array.Resize(ref number, 20); //korzystajmy z gotowych rozwiązań, tak jak w JAVA, w C++ takich nie ma :( Console.WriteLine("A po zmianie: " + number.Length); if (student.Age > 18) { Console.WriteLine("can drink"); } else { Console.WriteLine(" go home"); } Console.WriteLine(student.Age > 18 ? "Can drink." : "Go home."); // rewelacyjna skrócona wersja ifa { } //róźnica w użyciu for i foreach for (int i = 0; i < 5; i++) { Console.WriteLine("Wypisanie przez for po raz " + i); } foreach (string season in seasons) { Console.WriteLine("Wypisanie tablicy przez foreach"); Console.Write(season); } //Korzystajmy z gotowych klas skoro już są DateTime data = new DateTime(2020, 11, 11); Console.WriteLine("7 dni od podanej daty bedzie" + data.AddDays(7)); Console.WriteLine("Obecnie mamy rok " + data.Year); //enum zapisany poza main miesiace miesiac; int numer_miesiaca; Console.Write("Podaj numer 1-12 a dowiesz się jaki to miesiąc: "); numer_miesiaca = Console.Read(); switch (numer_miesiaca) { case 1: miesiac = miesiace.styczen; break; case 2: miesiac = miesiace.luty; break; case 3: miesiac = miesiace.marzec; break; case 4: miesiac = miesiace.kwiecen; break; case 5: miesiac = miesiace.maj; break; case 6: miesiac = miesiace.czerwiec; break; case 7: miesiac = miesiace.lipiec; break; case 8: miesiac = miesiace.sierpien; break; case 9: miesiac = miesiace.wrzesien; break; case 10: miesiac = miesiace.pazdziernik; break; case 11: miesiac = miesiace.listopad; break; case 12: miesiac = miesiace.grudzien; break; default: throw new ArgumentOutOfRangeException("Mówiłem 1-12, nieładnie"); //rzucanie wyjatkami opisane poniżej } Console.WriteLine(miesiac); //PRACA Z PLIKAMI FileStream plik = new FileStream("plik.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite); //tutaj kompilator sam powinien podpowiedzieć dodanie nowej biblioteki do obsługi plików //Możliwe FileMode //Append tworzy lub otwiera plik i przechodzi na jego koniec, wymaga obiektu z parametrem FileAccess.Write //Create tworzy plik, w razie gdy istnieje usuwa jego zawartość i zastępuje nową //CreateNew tworzy plik, w razie gdy istnieje generuje wyjątek //Open otwiera plik do odczytu, gdy nie istnieje generuje wyjątek //OpenOrCreate otwiera plik, jeżeli ten nie istnieje tworzy nowy //Truncate otwiera plik i czyści jego zawartość //Możliwe FileAccess //Read //Write //ReadWrite StreamWriter zapis = new StreamWriter(plik); //tutaj przekazanie argumentu w nawiasach zapis.WriteLine("Dodany do pliku napis"); zapis.Close(); //niby nie trzeba ale TRZEBA za każdym razem KONIECZNIE zamykamy kazdy plik który otwarliśmy i zrywamy nawiązane połączenie StreamReader odczyt = new StreamReader(plik); string text; text = odczyt.ReadLine(); odczyt.Close(); Console.WriteLine(text); //Wyjątki co by się nie wykraczyło //Wyjątki możemy łapac przez try catch //Na pokaz weźmiemy oklepany jak Najman w KSW przykład dzielenia przez 0 try //coś co powinno działać ale nie musi { string x = Console.ReadLine(); int xx = int.Parse(x); //konwersja typów, easy huh? Nie to co c++ string y = Console.ReadLine(); int yy = int.Parse(y); Console.WriteLine(xx / yy); } catch (DivideByZeroException DivEx) //łapanie za wyjątki { Console.WriteLine(DivEx.Message); Console.WriteLine("Czyżbyś probował dzielić przez 0?"); } //Przykładowe wyjątki //ArithmeticException //DivideByZeroException //ArgumentNullException //InvalidAsynchronousStateException wątek który chcesz użyć już nie istnieje //ArgumentOutOfRangeException //ObjectNotFoundException //EntityException //Blok finally i uzycie int A = 10; try { string B = Console.ReadLine(); } catch { Console.WriteLine("Nie zmieniłeś zmiennej, ojoj nieładnie"); } finally { Console.WriteLine(A); } //Rzucanie wyjątków //W przypadku np, wyjścia za zakres switcha możemy zrobić to co w powyższym kodzie default throw //checked i unchecked int max = int.MaxValue; //reprezentuje największą możliwą wartość inta unchecked { Console.WriteLine(max); Console.WriteLine(++max); Console.WriteLine(max + 64000000); } ////////////////TYPY GENERYCZNE///////////// //Kolekcje - zbiór obiektów, podobne do tablic, w stosunku do tablic mogą mieć: dynamiczny rozmiar, wiele rodzajów pojemników, zbiór metod do operacji na danych //ArrayList - możemy przechowywać różne typy obiektów, występują pronlemy z pakowaniem i rozpakowaniem, nie zalecane //Kolekcje generyczne - wykorzystują typy generyczne, brak pakowania i rozpakowania, bezpieczeństwo typu //typ - klasa która zawiera parametr typu //Kolekcje generyczne //List <T> //Stack<T> //Queue<T> //Dictionary<TKey, TValue> //SortedSet<T> List <int> lista = new List <int>(); //konieczna biblioteka using System.Collections.Generic , system powinien to podpowiedzieć lista.Add(5); lista.Add(1); lista.Add(3);