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.
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 .
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] .