Darko Jovišić
Avanture u IT-u
Live Search
Blog
ponedjeljak, svibanj 12, 2008

S novim .NET Frameworkom izašla je i nova verzija C# jezika. U verziji 3.0 uvode se sintaksna poboljšanja koja nam skraćuju vrijeme za programiranje i daju nam nove mogućnosti. Najvažnije novosti su:

1. Object Initializers

Omogućava nam kreiranje objekta uz inicijaliziranje atributa tog objekta iz jedne linije koda. Dosada smo imali dva načina kreiranja objekta. Prvi je da kreiramo objekt pa onda pojedinim atributima dajemo vrijednosti ili kreiramo specijalizirani konstruktor koji prime određene parametre. No za svaki pojedini slučaj trebali bi onda raditi nove konstruktore. Ovo se najbolje vidi na primjeru:

Stari način:

// Specialized constructor
Customer c =
  new Customer("Price","Jeff");


// Follow-up property settings
Customer c = new Customer();
c.LastName = "Price";
c.FirstName = "Jeff";


Novi način:

Customer c =
 new Customer() { LastName = "Price", 
                  FirstName = "Jeff" };


2. Automatic properties

Drugo pobljošanje je vezano za propertye i tzv. gettere/settere. Kao što vidite iz donjih primjera sad puno brže možete deklarirati public property koji je vezan na private varijablu unutar klase

Stari način:

public class Customer
{
  private int _id;


  public int ID
  {
    get { return _id;  }
    set { _id = value; }
  }
}


Novi način:

public class Customer
{
  public int ID
  {
    get;
    set;
  }
}


3. Implicitly-typed Local Variables

U novom C#-u dolazi i novi tip podataka "var" koji je nedefinirani tip podataka (tj. implicitno definirani tip podataka). Da ne bude zabune C# je još uvijek strongly-typed jezik što znači da se još uvijek strogo vodi računa o tipovima podataka. Ove varijable se provjeravaju kod kompajliranja tako da ne možete dinamički mijenjati tip podatka u runtime-u kao što je to slučaj npr. kod Javascripta.


var i = 32;  // i is System.Int32
var s = "hello";  // s is System.String
var c = new Customer(); // c is Customer


Console.Write(s.Length); // ok
Console.Write(i.Length); // compile-time error!
i = "world";  // compile-time error!
var x;   // compile-time error!



4. Extension Methods

Meni najdraže poboljšanje. Omogućava vam da na postojeće klase u .NET Frameworku nadodate svoje metode koje su vam često potrebne, a koje nisu implementirane u samom frameworku. U donjem primjeru na .NET klasu String nadodana je metoda Reverse koja onda postaje sastavni dio String klase i pojavljuje se kao jedna od metoda koju nudi intelisense.

static class StringExtension
    {
        public static string Reverse(this string s) {
            StringBuilder sb = new StringBuilder();
                for (int i = s.Length - 1; i >= 0; i--)
                { sb.Append(s[i]); }
                return sb.ToString();
        }
    }
...
string str = "hello";
Console.WriteLine(str.Reverse);



Izdvojio bih također i Lambda Expressions (ili lambda izrazi), funkcionalnost koja postoji u jezicima kao što su Lisp, ali opis ovog poboljšanja je nešto složeniji pa ćemo to ostaviti za neki drugi post.

darkojo @ 16:35 |Komentiraj | Komentari: 0
Opis bloga
Zovem se Darko Jovišić i radim u tvrtci Microsoft Hrvatska. Na ovom blogu bavim se svim novostima prvenstveno vezanim za Microsoft tehnologije, ali i drugim IT novostima. Stavovi izraženi na ovom blogu su moji osobni stavovi, i ne predstavljaju službene stavove tvrtke u kojoj radim.

RSS
RSS Feed:
AddThis Feed Button

Bookmark & share:


Technorati:
Dodaj u Technorati Favorites


Dodaj u Live Messenger:
Windows Live Alerts

 
Hrvatski IT blogovi

Microsoft:

Luka Abrus
Technology Specialist 

Ratko Mutavdžić
DPE Manager / National Technology Officer

Vjekoslav Babić
Konzultant za Microsoft Dynamics proizvode

Vibor Cipan (engl.)
UX Specialist

Student blogovi:

Ilija Brajković
Mirosoft Student Partner

Community blogovi:

Robert Petrunić (engl.)
Algebra

Tomislav Bronzin (engl.)
Citus

Vladan Strigo (engl.)
Netmedia

Ognjen Bajić (engl.)
Ekobit

Luka Gospodnetić (engl.)
In2

Dario Fruk (engl.)
Viadis

Neno Loje (engl.)
ThinkTecture

Tomislav Kralj
Aktiva Info

Dobriša Adamec
Trigger

Nenad Marjanović
ECS

Index.hr
Nema zapisa.