什么是'命名类型'

时间:2009-10-09 04:01:46

标签: c#

我经常在C#中遇到“命名类型”一词。这是什么意思?

4 个答案:

答案 0 :(得分:11)

已使用名称显式声明的类型。例如,您声明的任何类或结构都是命名类型。

还有一些匿名类型,它们是在没有名称的情况下声明的,编译器为该类型指定了一个开发人员无法访问的名称。

您可以阅读有关types in C#的不同类型的更多信息。

答案 1 :(得分:3)

这是指显式类型的变量,而不是那些具有匿名类型的变量。任何不是匿名类型的东西都是命名类型。

引入(我认为).Net 3.0,匿名类型提供了一种创建包含一组只读属性的对象的便捷方法,而无需为此目的定义显式命名类型。

虽然匿名类型的实现也需要使用type inference(用于键入对象的属性),但匿名类型不应与 {{3}混淆} var 关键字释放程序员明确声明变量类型,但编译器有效提供类型。 (大多数隐式类型变量不是匿名类型,因此是命名类型。它只是编译器进行命名)。

答案 2 :(得分:2)

任何不是Annonymous Type的类型都是“命名类型”。

答案 3 :(得分:2)

命名类型是您创建并提供名称的任何显式定义的类型(结构,类等)。

例如:

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

在这种情况下,Foo是一个命名类型。

这与匿名类型相反,后者通常是动态创建的:

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

我刚创建了一个名为MyFoo的新对象。我们没有明确地给它一个类型名称,但是我们隐式地给它一个String属性Bar,其值为“some text”。