我经常在C#中遇到“命名类型”一词。这是什么意思?
答案 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”。