Névtelen típus

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. március 22-én felülvizsgált verziótól ; az ellenőrzések 6 szerkesztést igényelnek .

Az anonim típusok a C  # 3.0, a Visual Basic .NET 9.0 és az Oxygene egyik újítása, amely lehetővé teszi az adattípusok számára , hogy egyetlen objektumban egy tulajdonságkészletet foglaljanak magukba anélkül, hogy először kifejezetten meg kellene adni a típust [1] . Ez az egyik legfontosabb jellemzője a C# és VB.net nyelvekbe integrált SQL -szerű LINQ nyelvnek. Mivel az anonim típusok nem támogatják a névgépelést, azokat olyan változókban kell tárolni, amelyek a C# fordítónak típuskövetkeztetés használatára utasító kulcsszóval deklarálva vannak.varaz adott változóhoz. Az ilyen tulajdonságok csak olvashatóak a C#-ban, de a VB.net-ben is olvashatók-írhatók.

Összehasonlítás a dinamikus gépeléssel

Ezt a funkciót nem szabad összetéveszteni a dinamikus gépeléssel . Annak ellenére, hogy az anonim típusok lehetővé teszik a programozó számára, hogy menet közben határozzon meg mezőket, ezek továbbra is statikus entitások. A típusellenőrzés fordítási időben történik, és egy nem létező mező elérése fordítási hibát okoz. Ez lehetővé teszi a programozó számára, hogy kihasználja a dinamikus nyelv nyújtotta kényelmet, valamint a statikusan begépelt nyelv típusbiztonságát .

Példák

C# nyelven

var person = new { Keresztnév = "Iván" , Vezetéknév = "Iván " } var size = new { Magasság = 7 , Súly = 5 , Mélység = 5 }

Visual Basic .NET-ben

Dim személy = Új , {-vel . FirstName = "Iván" , . Vezetéknév = "Ivanov" }

Az Oxigén nyelven

var person := new class(FirstName := 'Péter', Vezetéknév := 'Petrov');

Az OCaml-ben

let személy = objektum val firstName = "Péter" val lastName = "Petrov" end ;;

Kritika

Az anonim típusok egyik fő hátránya a C# 3.0-ban, hogy nem lehet exportálni azon a metóduson kívülre, amelyben létrehozták. Ez a korlátozás a .NET Framework 2.0 CLR örökölt korlátozásának köszönhető, amely nem biztosított névtelen típusokat. Emiatt az azonos aláírású névtelen típus exportálásakor nem lehetséges a névütközés feloldása, és ennek megfelelően az anonim típus nem tehető láthatóvá az összeállításon kívül. A módszerek korlátozottak, mivel más összeállításokba exportálhatók, ami a leírt problémát okozná [2] .

Lásd még

Jegyzetek

  1. Névtelen típusok (C# programozási útmutató) . Microsoft. Letöltve: 2008. november 25. Az eredetiből archiválva : 2012. július 23..
  2. C# 3.0 és LINQ. A LINQ -t működtető C# 3.0 koncepciók archiválva 2011. június 3-án a Wayback Machine -nél  

Linkek