bhawk.hu – Magyar fejlesztői blog

bhawk.hu – Magyar fejlesztői blog


2019. szeptember
h k s c p s v
« máj    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Kategória


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:

public string FullName { get; set; } = "N/A";
public string ReadOnlyMember { get; } = "This is read-only!";

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:

public class Customer {
    public string FullName { get; }

    public Customer(string first, string last) {
        FullName = first+ " " + last;
    }
}

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:

public Point Move (int dx, int dy) => new Point(x + dx, y + dy);

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:

public string Name => First + " " + Last;

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:

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);
    }
}

 

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:

if (MyVariableThatHasLongName != null)
{
    ...
}

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:

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

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

int count = customers?[0].Orders?.Count();

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:

var formatted = $"{Name} is {Age} years old.";

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 😉

 
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.

This site uses Akismet to reduce spam. Learn how your comment data is processed.