U četvrtak 26.07.2007. u svom Blogu Somasegar Namaste – Soma, objavo je Visual Studio 2008 Beta 2, koji je u ovoj verziji “Feature complete” sa GoLive Licencom. Za razliku od prve bete, koja je objavljena u aprilu ove godine, beta 2 je skoro 2 puta manja. Instalacijska image datoteka stoji 3,1 GB, za razliku od bete 1 koja je iznosila 5,8 GB (vrijednosti se odnose na Professional verziju).
Visual Inheritance
Nešto što me još kopka od verzije VS 2005, je Visual Inheritance (Vizualno nasljeđivanje) koje i u ovoj beta 2 verziji ostalo na nivou VS2005, odnosno nije kompletno. Kontrole poput DataGridView, StatusStrip, ToolbarStrip i druge kontrole, koje su kontainerske, ne podržavaju visual inheritance. Naime u beta 1 verziji je opcija Inherited Form čak bila nedostupna. Pokušao sam o tome da saznam više informacija, ali nisam ništa od toga do danas našao.
Instalacija VS2008 Beta 2
Instalacija ove verzije je protekla besprijekorno (Windows Vista Ultimate), za razliku od prve beta gdje je bilo poteškoća. Prije same instalacije nužno je deinstalirati prethodnu verziju. Instalacija je protekla relativno brzo (30 – tak minuta).
Prvi dojam o novoj verziji
Prvi dojam o novoj inačici VS nije zapanjujuća za razliku od VS2005, gdje je GUI bio u velikoj mjeri izmjenjen. Ova beta donosi neke samo kozmetičke promjene GUI-a u odnosu na VS2005. Kompletan raspored i izgled kontrola IDE je ostao isti.
Međutim prvi doja jako vara, jer ispod “Haube”, dosta je novih stvari. Najznačajnije inovacije koje se već cijelu ovu godinu promoviraju po internetu su LINQ – Language-INtegrated Query, AJAX – Asynchronous JavaScript and XML, WPF – Windows Presentation Foundation i druge.
LINQ
Database developere najviše zanima novine u razvijanju database klient aplikacija, koje su pojavom .NET tehnologije najviše uznapredovale. Obzirom da je LINQ kao takav integriran u svaki .NET jezik, kao mogućnost izražavanja programera na jedan dosada netradicionalan jezik, uveliko je zainteresirao većinu programera koji razvijaju aplikacije na NET platformi. Šta je suština ovog unapređenja u NET jezicima možemo razmatrati na više načina.
Kada govorimo o LINQ uglavnom razmišljamo o programiranju i razvijanju aplikacija povezanih sa bazom podataka. Barem to je tako u mom slučaju. Međutim to baš i nije tako. Nekoliko članaka o LINQ i njegovim osobinama naišao sam na internetu. Vrlo dobru seriju članaka o LINQ objavio je Daniel Month u svom blogu, kao i nekoliko u serijama objavljenih članaka o LINQ autora Granville Barnett.
Novine u C# 3.0
Novine koje su ugrađene u C# 3.0 uglavnom se vežu za LINQ a to su:
Automatic Property (AP)
AP – osobina .NET jezika da automatski dodaje osobinu za neku članicu klase. Naime dovoljno je napisati:
public class Point { public int X { get; set; } public int Y { get; set; } }
Kompailer automatski implementira osobine za članove klase X i Y.
Local variable Type Interface
Mogućnost deklarisanja lokalne varijable neodređenog tipa (var) koju kompailer definiše u vrijeme kompailiranja. Naime možemo pisati:
var broj = 50; var str = "jednostavan string"; var obj = new mojTip(); var brojevi = new int[] {2,4,6}; var dic = new Dictionary<int,mojTip>();
Kompailer generiše onakav IL kod kako bi ga mi deklarisali, za broj int, za string string, za mojTip itd.
Anonymous Type
Ova novina u jeziku dozvoljava nam deklaraciju anonimnog tipa slično kao i kod pretodnog slučaja tako kada definišemo varijablu anonimnog tipa var npr:
var p = new {X = 0, Y = 2};
Kompailer će prepoznati da je p tipa Point. Ne samo da će kompailer ispravno kopailirati prethodni kod, negi i InteliSence u VS 2008, takodjer će prepoznati p tipa Point.
Object Initializers & Collection initializers
Naime kod kolekcija ili polja, nije potrebno poizvati članicu Add da bi dodali objekte u kolekciju. To možemo uraditi u samom kreiranju objekta kolekcije npr:
List<Point> points = new List<Point> { new Point { X = 2, Y = 5 }, new Point { X = 1, Y = -10 }, new Point { X = 3, Y = 0 } };
Lambda Expressions
Lambda izrazi obezbjeđuju funkcionalne sintakse kod pisanja anonimnih metoda (koje su inovirane u C# 2.0 kompaileru). LE se pišu kao lista parametra koji prethode sa => tokenom, izrazom i blokom naredbe. Npr. Definišimo delegate tipa MojDelegat kao:
delegate B MojDelegat<A,B>(A arg);
ovako deklarisnog delegata možemo napisati koristeći anonimnu metodu kao:
MojDelegat<int,bool> IsPositive = broj => broj > 0;
Extension Methods
Proširene metode dozvoljavaju proširenje postojećeg tipa i konstrukciju tipova sa dodatnim metodama, bez toga da moramo derivirati postojeći tip. Napr ako želimo tipu string, dodati novu metodu koja će provjeriti da li je strinh validna Email adresa napravi ćemo sljedeće.
Dodati proširenu metodu tipu string:
public static class MojeProsirenjeStringa { public static bool DaLiJeValidanEmail(this string s) { Regex regex = new Regex( @"^[w-.]+@([w-]+.)+[w-]{2,4}$" ); return regex.IsMatch(s); } }
Kada definišemo proširenje, korištenje ovog proširenja radimo na sljedeći način:
using MojeProširenjeStringa; string email = Request.QueryString["email"];//Dobijanje emaila if ( email.DaLiJeValidanEmail() ) { // ... }
Pingback: LINQ – .NET Language Integrated Query II Dio « Bahrudin Hrnjica Web Page
Pingback: LINQ – .NET Language Integrated Query I Dio « Bahrudin Hrnjica Blog
Pingback: LINQ – .NET Language Integrated Query III Dio « Bahrudin Hrnjica Blog