2009-10-09 5 views

Répondre

11

Type explicitement déclaré avec un nom. Par exemple, toute classe ou structure que vous déclarez est un type nommé.

Il existe également des types anonymes qui sont déclarés sans nom et le compilateur attribue un nom à ce type qui n'est pas accessible au développeur.

Vous pouvez en savoir plus sur les différents types de types in C#.

3

Ceci est en référence aux variables explicitement typées, par opposition à celles qui ont un type anonyme. Tout ce qui n'est pas un type anonyme est un type nommé.

Introduit avec (je pense) .Net 3.0, les types anonymes fournissaient un moyen pratique de créer des objets contenant un ensemble de propriétés en lecture seule, sans avoir à définir un type explicitement nommé dans ce but.

Bien que la mise en œuvre des types anonymes nécessite également l'utilisation de type inference (pour la saisie des propriétés de l'objet), types anonymes ne sont pas à confondre avecImplicitly Typed Local Variables dans lequel le var mot-clé libère le programmeur d'indiquer explicitement un type de variable, mais où un type est effectivement fourni par le compilateur. (La plupart des variables typées implicitement ne sont pas des types anonymes et sont donc un type nommé, c'est juste le compilateur qui fait le nommage).

+0

Ceci est faux. L'inférence de type et les types anonymes ne sont pas liés. L'inférence de type peut être utilisée dans certains cas pour exclure des paramètres génériques ou avec le mot-clé var. Les types anonymes sont des types sans nom créés à la volée. – recursive

+0

@recursive Merci! Je lis à ce sujet et je me rends compte où je me suis trompé. L'inférence de type est souvent utilisée dans le cas des types anonymes, mais les deux concepts sont en effet complètement séparés. Je vais corriger ma réponse en conséquence (ou la tuer complètement ...) – mjv

+1

Cool. Downvote supprimé. – recursive

2

Tout type qui n'est pas un Annonymous Type serait un "type nommé".

+1

Selon votre définition, array-of-entiers à deux dimensions est un type nommé. Est-ce que cela a du sens? Si oui, quel est son nom? –

+1

@Eric Merci d'avoir lu cette question.S'il vous plaît jeter plus de lumière sur cette discussion si vous sentez qu'il ya quelque chose qui manque ou mal compris. – csharpbaby

2

Un type nommé est un type explicitement défini (struct, classe, etc.) que vous créez et donnez un nom.

.: par exemple

public class Foo 
{ 
    public string Bar{ get; set; } 
} 

Dans ce cas, Foo est un type nommé.

Ceci est par opposition à un type anonyme, qui est généralement créé à la volée:

var MyFoo = new { Bar = "some text" }; 

Je viens de créer un nouvel objet, appelé MyFoo. Nous ne lui avons pas donné explicitement un nom de type, mais nous lui avons implicitement donné une propriété String, Bar, avec la valeur "some text".

+0

du commentaire de MJV ci-dessus, 'Var MyFoo' signifie implicitement typé variable. Comment est ce type anonyme comme vous l'avez mentionné? Merci – csharpbaby

Questions connexes