OZ 2015/2
113 ORGANIZACIJA ZNANJA 2015, LETN. 20, ZV. 2 POROČILO return arg != null ? arg.Length : 0; Operator bo izvajal verigo dostopov in klicev metod samo, če je objekt različen od NULL . return arg?.Length ?? 0; Operator lahko uporabimo tudi za klice funkcij, ki so podane kot parameter v drugi funkciji ali kot samostojni dogodek (angl. event ). PropertyChanged?.Invoke(this, args); Inicializacija indeksov Inicializacija indeksov omogoča preglednejši način krei- ranja slovarjev in prirejanja vrednosti nekega ključa. var d = new Dictionary<string, string> { ["Name"] = "Damir" }; Inicializacija zbirk z raz{iritveno metodo Add V C# 5 (gl. prvi primer) smo razširili metodo Add tako, da je prejela samo en argument in s tem napolnila vre- dnost slovarja. var dictionary = new Dictionary<Type, string>(); dictionary.Add(typeof(string)); return dictionary; V novi različici poteka inicializacija slovarja enako, vendar pa prevajalnik sam ugotovi, katero metodo mora poklicati, da bo slovar pravilno napolnjen. var d = new Dictionary<Type, string> { typeof(string) }; Spremembe na nivoju sintakse Sintaksa filtriranja izjem Primer sintakse v C# 5: try { throw new ArgumentException(null, paramName); } catch (ArgumentException exception) { if (exception.ParamName != "ignore") { throw; } } Kadar želimo obravnavati izjeme, ki so točno določenega tipa in vsebujejo točno določeno informacijo, uporabimo filtriranje izjem. Novost v sintaksi C# 6 je, da lahko že v sami deklaraciji stavka Catch povemo, katere izjeme so za nas zanimive. try { throw new ArgumentException(null, paramName); } catch (ArgumentException exception) when (exception. ParamName == "ignore") { } Izraz Await v blokih Catch in Finally V C# 5 ni bilo dovoljeno uporabljati ključne besede Await v blokih Catch in Finally . Zato so programerji pisali raz- lične kode in se tako izognili tej težavi. V novi verziji C# 6 tega problema več ni, saj je dovoljeno uporabljati ključ- no besedo Await v obeh omenjenih blokih. try { await resource.OpenAsync(throwException); } catch (Exception exception) { await resource.LogAsync(exception); } finally { await resource.CloseAsync(); } Spremembe pri deklaracijah Samodejna inicializacija lastnosti Ob inicializaciji se samodejno določi vrednost lastnosti. Inicializatorji se sprožijo v navedenem vrstnem redu sku- paj z inicializatorji polj. Ker se to dogaja, preden je objekt v celoti inicializiran, se na to ne smemo nikjer sklicevati. public string Name { get; set; } = "Damir";
Made with FlippingBook
RkJQdWJsaXNoZXIy MTAxMzI5