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