BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Kortežai (Tuple) .NET Framework 4.0

Parašė Sergejus | 2009-08-18 00:15

Funkciniame programavime egzistuoja tokia sąvoka kaip „kortežas” arba angliškai Tuple. Kortežų pagalba metodas gali grąžinti ne vieną reikšmę, bet kelias vienu metu. Pagal prasmę kortežas panašus į apgaubiančią klasę, kuri naudojama kai reikia grąžinti kelias reikšmes. .NET Framework jau turėjo kažką panašaus, o tiksliau klasę KeyValuePair. Tai nėra tikrasis kortežas, nes pirma klasės pavadinimas tiksliai nusako saugomų objektų sąryšį (raktas / reikšmė), o antra - klasė visada priima lygiai du argumentus.

.NET Framework 4.0 į BCL (Base Class Library) yra įtrauktas naujas tipas Tuple, o tiksliau tipai Tuple<T1,T2>,…, Tuple<T1,…,T8>. Tai nėra tiesiog klasė - tai pilnavertis tipas, nes dabar įmanoma iš C# pasinaudoti F# sukurtais kortežais (kurie yra neatskiriama F# dalis) ir atvirkščiai. Be to, tipas Tuple įgyvendina kortežams reikalingus struktūrinį bei reikšmių palyginimus.

Tikriausiai jums pasitaikė atvejų, kada reikėjo grąžinti ne vieną, o kelias reikšmes vienu metu. Kaip pavyzdį pateiksiu metodą Validate, kuris nusako ar naudotojo vardas ir slaptažodis yra teisingi bei grąžina papildomą informaciją apie nesėkmingą prisijungimą:

Šį metodą nesunkiai galima perrašyti panaudojant kortežus:

Kaip matote, aš tiesiog apgaubiau grąžinamą reikšmę į kortežą. Kortežai gali būti kuriami dvejopai: naudojant operatorių new (kaip parodyta aukščiau) arba pasinaudojant gamykliniu metodu Create:

Ar Tuple panaudojimas yra gera praktika - negaliu pasakyti. Kol kas out parametras man atrodo priimtinesnis, nors tikrai buvo atveju, kada norėjosi iš metodo grąžinti anoniminį objektą (ypač dirbant su C# ir JavaScript sąsaja). Svarbu tai, kad tokia galimybė atsirado ir mes protingai galime ja pasinaudoti.

Rodyk draugams

Visual Studio 2010 and .NET Framework 4 Training Kit

Parašė Sergejus | 2009-05-22 23:59

Kartu su Visual Studio 2010 Beta 1 pasirodė ir Visual Studio 2010 and .NET Framework 4 Training Kit. Jis apima:

  • C# 4.0
  • Visual Basic 10
  • F#
  • Parallel Extensions
  • Windows Communication Foundation
  • Windows Workflow
  • Windows Presentation Foundation
  • ASP.NET 4
  • Entity Framework
  • ADO.NET Data Services
  • Managed Extensibility Framework
  • Visual Studio Team System

Rodyk draugams