Нови функции в C # 7

C # 7 добавя много нови функции със специален фокус върху простотата в кодирането и подобрената производителност. Той осигурява голям фокус върху консумацията на данни, опростяването на кода и производителността и е проектиран да премахне болката от необходимостта да пишете допълнителен код по повече от един начин.

Ето един бърз поглед към новите и подобрени в C # 7.

  • Поддръжка на локални функции
  • Подобрена поддръжка за Tuple Types
  • Видове записи
  • Съвпадащ модел
  • Нерегулируеми референтни типове
  • Неизменяеми типове
  • По-добра поддръжка за външни променливи

По-добра поддръжка за външни променливи

Възможността за деклариране на променлива out в момента на използване е чудесна нова функция в C # 7. Ето един примерен кодов фрагмент, който илюстрира това.

public void Save(Product p)

{

    p.SaveData(out int x);

    //Usual code

}

Добро място за използване на променливата е във вашия блок try. Просто използвайте булева изходна променлива, където типът връщане на true показва, че операцията е успешна, в противен случай е false.

Съвпадащ модел

C # 7 осигурява отлична поддръжка за съвпадение на шаблони. Можете да използвате съвпадение на шаблони за всеки тип данни, дори и за персонализирани типове данни. Освен това можете да се възползвате от съвпадение на шаблони, за да извлечете стойности от израз. Ето кодов фрагмент, който илюстрира съвпадение на образци по време на работа!

object obj = "This is a demonstration of pattern matching in C# 7";

if (obj is string str)

{

    Console.WriteLine(str);

}

Поддръжка за локални функции

Често може да се нуждаете от помощна функция, която трябва да се използва само веднъж - може би само в един метод. Вече можете да декларирате такива функции в друга функция. Такива функции са известни като локални функции. По същество поддръжката на локални функции ви позволява да декларирате методи в рамките на блока. Въпреки факта, че това беше възможно, като се използваха типове Func и Action с анонимни методи в по-ранните версии на езика C #, имаше малко предизвикателства. Те не поддържат генерични лекарства, параметри и параметри за справка и излизане.

По-добра поддръжка за Tuples

Tuple е временно групиране на стойности. Той е подобен на клас POCO, но такъв, който се създава в движение. Основното предимство на използването на Tuple е активирането на метод за връщане на множество стойности. Може да искате да използвате кортеж, за да представите набор от разнородни данни и да осигурите лесен начин за достъп до тези данни. Кортежите не са нищо ново и съществуват от доста време насам. Имате поддръжка за кортежи в програмните езици F # и Python. Можете да се възползвате от кортеж, за да съхранявате подредена, крайна последователност от неизменяеми, крайна последователност от хомогенни или хетерогенни данни с фиксирани размери.

Вече имате поддръжка за Tuple литерали и Tuple deconstruction. В C # 7 кортежът се счита за тип стойност. Следователно това е променлив тип и много по-ефективен по отношение на производителността.

Ненулируеми референтни типове

Типовете стойности, които могат да бъдат анулирани, бяха представени за първи път в C # 2.0. Ненулируемият референтен тип е точно обратното на тази функция. По същество нерегулируем референтен тип се използва за обозначаване на референтен тип, който гарантирано няма да бъде нулев. Ето как се декларира ненулируем референтен тип в C # 7:

string! str; //This is a non-nullable reference type

По-добра поддръжка за неизменяеми обекти

Неизменяем обект е този, състоянието на който не може да бъде променен, след като бъде създаден. Това прави неизменната обектна нишка безопасна. Да предположим, че създавате клас, който съдържа свойство, което има гетер, но няма сетер. Да, очевидно, изглежда, че екземпляр на класа е неизменим. Въпреки това, в по-късен момент, ако някой добави сетер за същото свойство, неизменността се губи, нали?

Ето къде на помощ идва по-добрата поддръжка за неизменни типове. С C # 7 можете да създадете нов екземпляр въз основа на друг екземпляр. Ето как може да се постигне това.

var firstObject = new Employee(101);

var secondObject = firstObject with {EmployeeId = 102};

Типове записи

Типовете записи ви позволяват да създадете тип, използвайки само свойства. По същество типът запис е тип данни, който се състои само от свойства. Следният кодов фрагмент илюстрира как може да се декларира тип запис.

 class Rectangle(int Height, int Breadth);