bhawk.hu – Magyar fejlesztői blog

bhawk.hu – Magyar fejlesztői blog


2024. november
h K s c p s v
« dec    
 123
45678910
11121314151617
18192021222324
252627282930  

Kategóriák


6 újítás, melyet a C# 6 hozott el

Gulyás GáborGulyás Gábor

C#-New-Features

Az új Visual Studio 2015-ös verzióval együtt debütált a C# legújabb kiadása is, mely a 6-os verziószámot viseli. A módosítások a legsűrűbben felhozott kérésekre adnak választ, legtöbbjük kényelmi célokat szolgál. Haladjunk szépen sorban:
 

1. Auto-Property

Mostantól amikor egy új adattagot adunk meg, melyhez getter és setter tartozik, nem lesz szükség azt konstruktorból inicializálni, azt már a deklarációnál megtehetjük:

[ecko_code_highlight language=”c#”]public string FullName { get; set; } = “N/A”;
public string ReadOnlyMember { get; } = “This is read-only!”;[/ecko_code_highlight]

Emellett azonban lehetőségünk van arra, hogy a tartalmazó osztályon belüli konstruktorból inicializáljunk egy olyan adattagot, melyen csak getter-t adtunk meg:

[ecko_code_highlight language=”c#”]public class Customer {
public string FullName { get; }

public Customer(string first, string last) {
FullName = first+ ” ” + last;
}
}[/ecko_code_highlight]

[ecko_contrast]

2. Függvénytörzs lamba-kifejezéssel

A függvényeink törzsét lehetőségünk van a Linq-ból ismert Lamba-kifejezésekhez hasonlóan deklarálni:

[ecko_code_highlight language=”c#”]public Point Move (int dx, int dy) => new Point(x + dx, y + dy);[/ecko_code_highlight]

A kimenet ugyanaz lesz, mintha a függvénytörzsből az új ponttal térnénk vissza.
Adattagok esetében szintén megtehetjük ugyanezt:

[ecko_code_highlight language=”c#”]public string Name => First + ” ” + Last;[/ecko_code_highlight]

[/ecko_contrast]

3. Using static

Ha valamelyik névtérnek egy adott osztályát sűrűn használjuk – például a System.Console-t a WriteLine függvény miatt -, a using helyett a using static kulcsszóval megspórolhatjuk az osztály kiírását:

[ecko_code_highlight language=”c#”]using static System.Console;
using static System.Math;
using static System.DayOfWeek;

class Program
{
static void Main()
{
WriteLine(Sqrt(3*3 + 4*4));
WriteLine(Friday – Monday);
}
}[/ecko_code_highlight]

 

[ecko_contrast]

4. Nullérték vizsgálat

A jelenlegi verzióban minden egyes alkalommal, amikor meg szeretnénk győződni arról, hogy egy változónk nem null, egy elég hosszú kódot kell kiírnunk:

[ecko_code_highlight language=”c#”]if (MyVariableThatHasLongName != null)
{

}[/ecko_code_highlight]

Tegyük fel, hogy van egy tömbünk, melybe Customer típusú objektumokat tettünk bele. Elméletileg egyetlen darabnak kell benne lennie és azt szeretnénk egy másik változóba másolni. Meg kell győződnünk róla, hogy az nem null, különben NullReferenceException kivételt kapunk, mivel olyan indexre hivatkoztunk a tömbben, ami nem is létezik. Ehelyett a következőt tehetjük:

[ecko_code_highlight language=”c#”]Customer customer = customers?[0]; // null értéket ad vissza, ha nincs ilyen érték[/ecko_code_highlight]

Ugyanezt akár tovább is bonyolíthatjuk, amikor az objektum valamilyen tulajdonságára vagyunk kíváncsiak:

[ecko_code_highlight language=”c#”]int count = customers?[0].Orders?.Count();[/ecko_code_highlight]

[/ecko_contrast]

5. String.Format helyett…

Ahelyett, hogy számolgatnánk az indexeket a szövegünkben, majd igyekszünk a változókat jó sorrendben megadni a String.Format argumentumaiként, egy új és sokkal kézenfekvőbb megoldást kínál a C# 6:

[ecko_code_highlight language=”c#”]var formatted = $”{Name} is {Age} years old.”;[/ecko_code_highlight]

[ecko_contrast]

6. Végre! Await a catch és finally blokkokban

Amikor aszinkron (async) metódusokat és függvényeket hozunk létre, sajnos volt egy olyan korlátozása a C#-nak, hogy a try-catch blokkokban a kivétel kezelésekor már nem használhattuk az await kulcsszót, az aszinkron hívások eredményét nem várhattuk meg. Erre a limitációra választ adott a C# 6-os verziója, melyben a catch és finally blokkokban is használhatjuk az await-et! Finally 😉

[/ecko_contrast]

 
Hogy a C# 6-ot teljes pompájában megcsodálhassuk, szükségünk lesz a Visual Studio 2015-ös kiadására! Az ingyenes letölthető Community verzióval azonnal neki is láthatunk a fejlesztésnek, irány hát a Visual Studio webszájt és fejlesztésre fel!

C#

Minden ami Microsoft technológia! Több mint 8 éve foglalkozom programozással, ez idő alatt pedig rengeteg nyelvet elsajátítottam, leginkább a C#-ot kedvelem! Jelenleg szoftverfejlesztőként dolgozom!

Comments 0
There are currently no comments.

Ez a weboldal az Akismet szolgáltatását használja a spam kiszűrésére. Tudjunk meg többet arról, hogyan dolgozzák fel a hozzászólásunk adatait..