Пример #1
0
        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);