static void Main(string[] args) { // tehdään oma delegaatti, joka osoittaa haluttuun metodiin // MyDelegate kertoo että sen on oltava sama signature // void <mettodin nimi>(string text) mydelegate = new MyDelegate(MyMethod); mydelegate.Invoke("message"); mydelegate("another message"); // multicastaus tehdään += syntaxilla! mydelegate += MyMethodToo; // multicasting to multiple methods mydelegate("multicast!"); // poistetaan metodit delegaatilta mydelegate -= MyMethod; mydelegate -= MyMethodToo; // Cat is a class with CatWalks() Cat jenny = new Cat(); jenny.name = "Jenny"; Cat kalle = new Cat(); kalle.name = "Kalle"; mydelegate += jenny.CatWalks; mydelegate += kalle.CatWalks; mydelegate("PRETTY!"); // Tehkää muutokset niin, että saatte // jennyn sanomaan tämän viestin kallelle. mydelegate -= jenny.CatWalks; mydelegate -= kalle.CatWalks; jenny.AddListener(kalle); jenny.SayMessage("PUTTEPOSSU"); jenny.AddListener(jenny); jenny.SayMessage("VIRVE"); jenny.DeleteListener(jenny); jenny.SayMessage("SAARA"); // kallella ei ole kuuntelijaa, joten viesti EI mene läpi kalle.SayMessage("RIKKI"); // tehdään eventtejä Stock myStock = new Stock(); myStock.Price = 10; myStock.Price = 20; StockBroker terhi = new StockBroker(); terhi.Subscribe(myStock); myStock.Price = 30; myStock.Price = 35; myStock.Price = 32; myStock.PriceCrash(); terhi.UnSubscribe(myStock); myStock.Price = 40; Console.BackgroundColor = ConsoleColor.Black; // tehdään lambda funktioita. Func <int, int> myfunc = x => x * x; Func <int, int, int> myfuncToo = (x, y) => x + y; Func <int> myfuncTooToo = () => 123; Func <int, int, bool> myTernaryTest = (a, b) => (a > b) ? true : false; //nyt funktioita voidaan kustua Console.WriteLine(myTernaryTest(10, 2)); // voit tehdä funktioita, jota kutsut tästä MySpesialDelegate myDelegate = delegate(int x, int y) { return(x * y); }; int res1 = myDelegate(2, 2); int res2 = myDelegate(4, 4); try { // avataan rajapinnan takana olevia resursseja // tehdään joitan rajapinnan kanssa ... GenerateError(null); } /* * catch (ArgumentNullException ex) * { * Console.WriteLine("Oh no! Argument Null found! "); * Console.WriteLine("paramname is " + ex.ParamName + " with " + ex.Message); * } */ catch (Exception exception) { // jos toiminto kaatuu mennään tänne // ilmoitus kätttäjälle + logitus // if ( exception.Message == "DEBUG_GENERATED_ERROR") { Console.WriteLine(" Me generated this exception"); Console.WriteLine(exception); } } finally { // ja tänne mennään joka tapuaksessa // (täällä suljet KAIKKI toiminnot) } // Iteraatto foreach (string s in Foo()) { Console.WriteLine(s); // A,B,C } //nullable type int?arvo = null; // salliii arvon null käytön. //int arvotoo = null;// interer ei saa olla null if (arvo != null) { Console.WriteLine(arvo); } else { Console.WriteLine("arvo on null!"); } // voidann ottaa vastaa oblect rajapinnan takaa // ja muuttaa se halutuksi tai antaa sen olla null, jos // vääränlainen object o = 1234; //object o = "1234"; int?xxxx = o as int?; //Coalescing operator huolehtii konvertia int xxxxLopullinen = xxxx ?? default; // Console.WriteLine(xxxx); // print empty as it is empty Console.WriteLine(xxxxLopullinen); //lasketaan str MyStruct AAA = new MyStruct(123); MyStruct myTest = AAA + 456; myTest += 789; Console.WriteLine(myTest.value); //anonymous type (eli simppeli monimutkaisempi muuttuja) // loutu tietotyyppi on vakio. arvoja ei voi muuttaa var Pullo = new { Nimi = "jaffa", koko = 100 }; string testaus = Pullo.Nimi; // jenny is a Cat class object created earlier. // this is VERY slow. dynamic mydynamic = jenny; mydynamic.CatWalks("fefefe"); //periaattessa voi kirjoittaa roskaa kuten alla //mydynamic.roskaa(); // tHIS IS FAS AS IT IS DONE DURING THE COPOLATION object myobject = jenny; //compiler ei tiedä objektin salllimia metodeja // niinpä me pakotamme sen toimimaan oikeen // käyttämällä cast // ((Cat)myobject).CatWalks("ggg"); Console.ReadLine(); }
static void Main(string[] args) { // tehdään oma delegaatti, joka osoittaa haluttuun metodiin // MyDelegate kertoo että sen on oltava sama signature // void <mettodin nimi>(string text) mydelegate = new MyDelegate(MyMethod); mydelegate.Invoke("message"); mydelegate("another message"); // multicastaus tehdään += syntaxilla! mydelegate += MyMethodToo; // multicasting to multiple methods mydelegate("multicast!"); // poistetaan metodit delegaatilta mydelegate -= MyMethod; mydelegate -= MyMethodToo; // Cat is a class with CatWalks() Cat jenny = new Cat(); jenny.name = "Jenny"; Cat kalle = new Cat(); kalle.name = "Kalle"; mydelegate += jenny.CatWalks; mydelegate += kalle.CatWalks; mydelegate("PRETTY!"); // Tehkää muutokset niin, että saatte // jennyn sanomaan tämän viestin kallelle. mydelegate -= jenny.CatWalks; mydelegate -= kalle.CatWalks; jenny.AddListener(kalle); jenny.SayMessage("PUTTEPOSSU"); jenny.AddListener(jenny); jenny.SayMessage("VIRVE"); jenny.DeleteListener(jenny); jenny.SayMessage("SAARA"); // kallella ei ole kuuntelijaa, joten viesti EI mene läpi kalle.SayMessage("RIKKI"); // tehdään eventtejä Stock myStock = new Stock(); myStock.Price = 10; myStock.Price = 20; StockBroker terhi = new StockBroker(); terhi.Subscribe(myStock); myStock.Price = 30; myStock.Price = 35; myStock.Price = 32; myStock.PriceCrash(); terhi.UnSubscribe(myStock); myStock.Price = 40; Console.BackgroundColor = ConsoleColor.Black; // tehdään lambda funktioita. Func <int, int> myfunc = x => x * x; Func <int, int, int> myfuncToo = (x, y) => x + y; Func <int> myfuncTooToo = () => 123; Func <int, int, bool> myTernaryTest = (a, b) => (a > b) ? true : false; // nyt funktioita voidaan kutsua Console.WriteLine(myTernaryTest(10, 2)); // vit tehdä funktion, jota kutsut tästä MySpecialDelegate myDelegate = delegate(int x, int y) { return(x * y); }; int res1 = myDelegate(2, 2); int res2 = myDelegate(2, 4); try { // avataan rajapinnan takana olevia resursseja // tehdään jotain rajapinnan kanssa... GenerateError(null); } catch (ArgumentNullException ex) { // jos toiminto kaatuu mennään tänne // Ilmoitus käyttäjälle + logitus Console.WriteLine("Oh dear! Argument Null found! "); Console.WriteLine("paramname is " + ex.ParamName + " with " + ex.Message); } catch (Exception exception) { // this gets ALL errors // jos toiminto kaatuu mennään tänne // Ilmoitus käyttäjälle + logitus Console.WriteLine("Teacher Generated This!"); Console.WriteLine(exception); } finally { // ja tänne mennään joka tapauksessa // (täällä suljet KAIKKI rajapinnan yli menevät resurssit) } Console.ReadLine(); }