Tip anonim

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 22 martie 2021; verificările necesită 6 modificări .

Tipurile anonime este una dintre inovațiile din C  # 3.0, Visual Basic .NET 9.0 și Oxygene care permite tipurilor de date să încapsuleze un set de proprietăți într-un singur obiect fără a fi nevoie să specificați mai întâi în mod explicit tipul [1] . Aceasta este una dintre cele mai importante caracteristici ale limbajului SQL -like LINQ integrat în limbajele C# și VB.net. Deoarece tipurile anonime nu acceptă tastarea numelor, acestea trebuie să fie stocate în variabilele declarate cu cuvântul cheie care îi spune compilatorului C# să folosească inferența tipuluivarpentru variabila dată. Astfel de proprietăți sunt doar citire în C#, dar sunt și citire-scriere în VB.net.

Comparație cu tastarea dinamică

Această caracteristică nu trebuie confundată cu tastarea dinamică . Chiar dacă tipurile anonime permit programatorului să definească câmpuri din mers, acestea sunt totuși entități statice. Verificarea tipului se face în timpul compilării, iar încercarea de a accesa un câmp care nu există va cauza o eroare de compilare. Acest lucru permite programatorului să profite de confortul unui limbaj dinamic împreună cu siguranța tipului unui limbaj tipizat static .

Exemple

În C#

var person = new { FirstName = "Ivan" , LastName = "Ivanov" } var size = new { Heigth = 7 , Weigth = 5 , Depth = 5 }

În Visual Basic .NET

Dim person = Nou cu {. Prenume = „Ivan” , . Nume = „Ivanov” }

În limbajul Oxygene

var persoană := clasă nouă(Prenume := 'Petru', Nume := 'Petrov');

În OCaml

let person = object val firstName = "Peter" val lastNume = "Petrov" end ;;

Critica

Unul dintre principalele dezavantaje ale unui tip anonim în C# 3.0 este incapacitatea de a-l exporta în afara metodei în care a fost creat. Această limitare se datorează unei limitări vechi a .NET Framework 2.0 CLR, care nu a furnizat tipuri anonime. În consecință, nu este posibil să se rezolve un conflict de nume atunci când se exportă un tip anonim cu aceeași semnătură și, în consecință, tipul anonim nu poate fi făcut vizibil în afara ansamblului. Metodele sunt limitate deoarece pot fi exportate în alte ansambluri, ceea ce ar cauza problema descrisă [2] .

Vezi și

Note

  1. Tipuri anonime (Ghid de programare C#) . Microsoft. Consultat la 25 noiembrie 2008. Arhivat din original pe 23 iulie 2012.
  2. C# 3.0 și LINQ. Concepte C# 3.0 care au alimentat LINQ Arhivat la 3 iunie 2011 la Wayback Machine  

Link -uri