Anonym type

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 22. marts 2021; checks kræver 6 redigeringer .

Anonyme typer er en af ​​nyskabelserne i C  # 3.0, Visual Basic .NET 9.0 og Oxygene , der tillader datatyper at indkapsle et sæt egenskaber i et enkelt objekt uden først at skulle specificere typen [1] . Dette er en af ​​de vigtigste funktioner i det SQL -lignende LINQ -sprog integreret i C#- og VB.net-sprogene. Da anonyme typer ikke understøtter navneindtastning, skal de gemmes i variabler , der er erklæret med nøgleordet, der fortæller C#-kompileren at bruge typeinferensvarfor den givne variabel. Sådanne egenskaber er skrivebeskyttet i C#, men de er også read-write i VB.net.

Sammenligning med dynamisk skrivning

Denne funktion må ikke forveksles med dynamisk indtastning . Selvom anonyme typer tillader programmøren at definere felter i farten, er de stadig statiske enheder. Typekontrol udføres på kompileringstidspunktet, og forsøg på at få adgang til et felt, der ikke eksisterer, vil forårsage en kompileringsfejl. Dette giver programmøren mulighed for at drage fordel af bekvemmeligheden ved et dynamisk sprog sammen med typesikkerheden i et statisk skrevet sprog .

Eksempler

I C#

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

I Visual Basic .NET

Svag person = Ny med {. Fornavn = "Ivan" , . Efternavn = "Ivanov" }

I iltsproget

var person := ny klasse(Fornavn := 'Peter', Efternavn := 'Petrov');

I OKaml

lad person = objekt val fornavn = "Peter" val efternavn = "Petrov" ende ;;

Kritik

En af de største ulemper ved en anonym type i C# 3.0 er manglende evne til at eksportere den uden for den metode, hvor den blev oprettet. Denne begrænsning skyldes en ældre begrænsning af .NET Framework 2.0 CLR, som ikke leverede anonyme typer. Som konsekvens heraf er det ikke muligt at løse en navnekonflikt ved eksport af en anonym type med samme signatur, og den anonyme type kan derfor ikke gøres synlig uden for samlingen. Metoderne er begrænsede, fordi de kan eksporteres til andre samlinger, hvilket ville forårsage det beskrevne problem [2] .

Se også

Noter

  1. Anonyme typer (C#-programmeringsvejledning) . Microsoft. Hentet 25. november 2008. Arkiveret fra originalen 23. juli 2012.
  2. C# 3.0 og LINQ. C# 3.0-koncepter, der drev LINQ Arkiveret 3. juni 2011 på Wayback Machine  

Links