public static void Main() { ColorText.WriteInColor(ConsoleColor.Cyan, "==== Try Catch Finally ====\n"); int[] array = new int[10]; TryCatchFinallyPresentation.Present("datadasdasdsadsadsada.txt", ref array, 5); TryCatchFinallyPresentation.Present("data.txt", ref array, 15); TryCatchFinallyPresentation.Present("data.txt", ref array, 5); Console.ReadKey(); ColorText.WriteInColor(ConsoleColor.Cyan, "\n==== Functions, parameters and references ====\n"); FunctionsPresentation.Present(); Console.ReadKey(); ColorText.WriteInColor(ConsoleColor.Cyan, "\n==== Classes and inheritance ====\n"); ObjectsPresentation.Present(); Console.ReadKey(); ColorText.WriteInColor(ConsoleColor.Cyan, "\n==== Interfaces ====\n"); InterfacePresentation.Present(); Console.ReadKey(); ColorText.WriteInColor(ConsoleColor.Cyan, "\n==== List<T> Queue<T> Stack<T> ====\n"); CollectionPresentation.Present(); //Console.ReadKey(); ColorText.WriteInColor(ConsoleColor.Cyan, "\n==== List<T> Queue<T> Stack<T> ====\n"); CollectionPresentation.Present(); Console.ReadKey(); ColorText.WriteInColor(ConsoleColor.Cyan, "\n==== Koniec prezentacji ====\n"); Console.ReadKey(); }
static void PresentList() { ColorText.WriteInColor(ConsoleColor.Cyan, "= List =\n"); // lista to kolekcja zdolna do przechwywania // danych z możliwością rozszerzeania się w przypadku takiej potrzeby // lista zapewnia pełny dostęp do wszystkich swoich elementów List <TestClass> list = new List <TestClass>(); list.Add(new TestClass("cats")); Console.WriteLine("Added object to list..."); list.Add(new TestClass("dogs")); Console.WriteLine("Added object to list..."); list.Add(new TestClass("goats")); Console.WriteLine("Added object to list..."); Console.WriteLine($"\nList length = {list.Count}\n"); list.Add(new TestClass("snakes")); Console.WriteLine("Added object to list..."); list.Add(new TestClass("birds")); Console.WriteLine("Added object to list..."); Console.WriteLine($"\nList length = {list.Count}\n"); list.RemoveAt(1); Console.WriteLine("Removed object with index 1..."); list[3] = new TestClass("lizards"); Console.WriteLine("Changed object with index 0..."); Console.WriteLine($"\nList length = {list.Count}\n"); Console.WriteLine("Printing list: "); foreach (var item in list) // foreach działa na liście dzięki temu, // że ta dziedziczy z IEnumerable { Console.WriteLine("\t" + item.variable); } Console.WriteLine(); }
public static void ReadFromFileIntoIntArray(string path, ref int[] array, int index) { StreamReader stream = new StreamReader(path); try { // spróbuj przeczytać plik do końca, // przekowertować tekst na liczbę, // a następnie wpisać ją do tablicy. // Mogą wydażyć się tu co najmniej 3 wyjątki string s = stream.ReadToEnd(); array[index] = int.Parse(s); Console.WriteLine("Operacja wykonana pomyślnie"); } catch (Exception ex) { // Jeżeli wyjątek wystąpi przechwytujemy go // aby uniknąć wysypania się programu ColorText.WriteError($"Przechwycono wyjątek: {ex.GetType()}"); } finally { // Niezależnie czy uda się wykonać zadanie // strumień musi zostać zamknięty // więc stream.Close() umieszczam w finally{} if (stream != null) { stream.Close(); } Console.WriteLine($"Strumień zamknięty."); } }
static void PresentQueue() { ColorText.WriteInColor(ConsoleColor.Cyan, "= Queue =\n"); // kolejka to kolekcja zdolna do przechwywania // danych z możliwością rozszerzeania się w przypadku takiej potrzeby // kolejka pozwala na wykolejkowanie najwcześniej zakolejkowanego // elementu -- nie można wybierać z niej elementów po indeksie Queue <TestClass> queue = new Queue <TestClass>(); queue.Enqueue(new TestClass("cats")); Console.WriteLine("Enqueued object to queue..."); queue.Enqueue(new TestClass("dogs")); Console.WriteLine("Enqueued object to queue..."); queue.Enqueue(new TestClass("lizards")); Console.WriteLine("Enqueued object to queue..."); queue.Enqueue(new TestClass("snakes")); Console.WriteLine("Enqueued object to queue..."); Console.WriteLine($"\nQueue length = {queue.Count}\n"); Console.WriteLine("Printing queue: "); foreach (var item in queue) // foreach działa na kolejce dzięki temu, // że ta dziedziczy z IEnumerable { Console.WriteLine("\t" + item.variable); } Console.WriteLine(); TestClass testObject = queue.Dequeue(); Console.WriteLine($"Dequeued from queue... {testObject.variable}"); // fukcja Dequeue() wyciąga z kolejki najwcześniej // zakolejkowany element jednocześnie usuwając go // z kolejki testObject = queue.Peek(); Console.WriteLine($"Peeked to queue... {testObject.variable}"); // fukcja Peek() zwraca z kolejki najwcześniej // zakolejkowany element jednocześnie NIE usuwając go // z kolejki Console.WriteLine($"\nQueue length = {queue.Count}\n"); Console.WriteLine("Printing queue: "); foreach (var item in queue) // foreach działa na kolejce dzięki temu, // że ta dziedziczy z IEnumerable { Console.WriteLine("\t" + item.variable); } Console.WriteLine(); }
static void PresentStack() { ColorText.WriteInColor(ConsoleColor.Cyan, "= Stack =\n"); // stos to kolekcja zdolna do przechwywania // danych z możliwością rozszerzeania się w przypadku takiej potrzeby // stos pozwala na wyłuskanie najpóźniej wepchanego // elementu -- nie można wybierać z niego elementu po indeksie Stack <TestClass> stack = new Stack <TestClass>(); stack.Push(new TestClass("cats")); Console.WriteLine("Pushed object on top of stack..."); stack.Push(new TestClass("dogs")); Console.WriteLine("Pushed object on top of stack..."); stack.Push(new TestClass("lizards")); Console.WriteLine("Pushed object on top of stack..."); stack.Push(new TestClass("snakes")); Console.WriteLine("Pushed object on top of stack..."); Console.WriteLine($"\nStack length = {stack.Count}\n"); Console.WriteLine("Printing stack: "); foreach (var item in stack) // foreach działa na stosie dzięki temu, // że ten dziedziczy z IEnumerable { Console.WriteLine("\t" + item.variable); } Console.WriteLine(); TestClass testObject = stack.Pop(); Console.WriteLine($"Poped from stack... {testObject.variable}"); // fukcja Pop() wyciąga ze stosu najpóźniej // wepchnięty element jednocześnie usuwając go // ze stosu testObject = stack.Peek(); Console.WriteLine($"Peeked to stack... {testObject.variable}"); // fukcja Peek() wyciąga ze stosu najpóźniej // wepchnięty element jednocześnie NIE usuwając go // ze stosu Console.WriteLine($"\nStack length = {stack.Count}\n"); Console.WriteLine("Printing stack: "); foreach (var item in stack) // foreach działa na stosie dzięki temu, // że ten dziedziczy z IEnumerable { Console.WriteLine("\t" + item.variable); } Console.WriteLine(); }
public static void Present(string path, ref int[] array, int index) { try { // W wypadku gdy ścieżka będzie nieodpowiednia // trzeba przechwycić wyjątek ReadFromFileIntoIntArray(path, ref array, index); } catch (FileNotFoundException ex) { // W wypadku gdy plik nie istnieje // dodatkowo wyświetl jego oczekiwaną lokalizacje ColorText.WriteError($"Przechwycono wyjątek: {ex.GetType()}"); ColorText.WriteError($"Plik w lokacji {ex.FileName} nie istnieje!"); } catch (Exception ex) { ColorText.WriteError($"Przechwycono wyjątek: {ex.GetType()}"); } Console.WriteLine(); }
public static void PresentDictionary() { ColorText.WriteInColor(ConsoleColor.Cyan, "= Dictionary =\n"); // słownik jest kolekcją przyjmującą dwa // argumenty -- przerwszy jest kluczem, a drugi wartością // klucze muszą być unikatowe // w razie potrzeby sam automatycznie się powiększa Dictionary <TestClass, int> dictionary = new Dictionary <TestClass, int>(); // w tym wypadku lista będzie posortowana // na podstawie wartości TestClass.variable TestClass testObject = new TestClass("lizards"); dictionary.Add(new TestClass("cats"), 5); Console.WriteLine("Added KeyPairValue to dictionary..."); dictionary.Add(new TestClass("dogs"), 9); Console.WriteLine("Added KeyPairValue to dictionary..."); dictionary.Add(testObject, 2); Console.WriteLine("Added KeyPairValue to dictionary..."); dictionary.Add(new TestClass("snakes"), 4); Console.WriteLine("Added KeyPairValue to dictionary..."); Console.WriteLine($"\nDictionary length = {dictionary.Count}\n"); Console.WriteLine("Printing dicionary: "); foreach (var item in dictionary) // foreach działa na słowniku dzięki temu, // że ten dziedziczy z IEnumerable { Console.WriteLine($"\t Key: {item.Key.variable} \t| Value {item.Value}"); } dictionary.Add(new TestClass("goats"), 9); Console.WriteLine("AddedKeyPairValue to dictionary..."); // Wartości mogą się powtarzać w przeciwieństwie do kluczy dictionary.Add(new TestClass("cows"), 12); Console.WriteLine("AddedKeyPairValue to dictionary..."); dictionary.Remove(testObject); Console.WriteLine("Removed KeyPairValue from dictionary..."); Console.WriteLine($"\nDictionary length = {dictionary.Count}\n"); Console.WriteLine("Printing dicionary: "); foreach (var item in dictionary) { Console.WriteLine($"\t Key: {item.Key.variable} \t| Value {item.Value}"); } }
public static void PresentSortedList() { ColorText.WriteInColor(ConsoleColor.Cyan, "= Sorted List =\n"); // posortowana lista jest kolekcją przyjmującą dwa // argumenty -- przerwszy jest kluczem który musi // dziedziczyć interfejsc ICompareable, to po nim owa lista // automatycznie się sortuje po dodaniu/zmienieniu // dowolniej wartości klucza SortedList <string, TestClass> SL = new SortedList <string, TestClass>(); // w tym wypadku lista będzie posortowana // na podstawie wartości TestClass.variable AddTestClassOjectToSortedList(new TestClass("cats"), SL); Console.WriteLine("Added object to sorted list"); AddTestClassOjectToSortedList(new TestClass("dogs"), SL); Console.WriteLine("Added object to sorted list"); AddTestClassOjectToSortedList(new TestClass("lizards"), SL); Console.WriteLine("Added object to sorted list"); AddTestClassOjectToSortedList(new TestClass("snakes"), SL); Console.WriteLine("Added object to sorted list"); Console.WriteLine($"\nSorted List length = {SL.Count}\n"); Console.WriteLine("Printing list: "); foreach (var item in SL) // foreach działa na posortowanej liście dzięki temu, // że ta dziedziczy z IEnumerable { Console.WriteLine($"\t{item.Key}"); } SL.RemoveAt(3); Console.WriteLine("Removed object from sorted list with index 3"); AddTestClassOjectToSortedList(new TestClass("goats"), SL); Console.WriteLine("Added object to sorted list"); Console.WriteLine($"\nStack length = {SL.Count}\n"); Console.WriteLine("Printing list: "); foreach (var item in SL) { Console.WriteLine($"\t{item.Key}"); } // Pomimo zmian w liście ta nadal będzie posortowana względem klucza }