【发布时间】:2014-02-11 00:04:43
【问题描述】:
我经常在 C# 中遇到术语“命名类型”。什么意思?
【问题讨论】:
标签: c#
我经常在 C# 中遇到术语“命名类型”。什么意思?
【问题讨论】:
标签: c#
已用名称显式声明的类型。例如,您声明的任何类或结构都是命名类型。
还有匿名类型,它们声明时没有名称,编译器会为该类型分配一个开发人员无法访问的名称。
您可以阅读更多关于不同类型的types in C#。
【讨论】:
这是指显式类型的变量,而不是那些具有匿名类型的变量。任何不是匿名类型的都是命名类型。
随着(我认为).Net 3.0 的引入,匿名类型提供了一种方便的方法来创建包含一组 只读 属性的对象,而无需为此目的定义显式命名的类型。
虽然匿名类型的实现也需要使用type inference(用于对象属性的类型化),但不要将匿名类型与Implicitly Typed Local Variables混淆,其中var 关键字将程序员从显式声明变量类型中解放出来,但编译器有效地提供了类型。 (大多数隐式类型变量不是匿名类型,因此是命名类型。只是编译器进行命名)。
【讨论】:
任何不是Annonymous Type 的类型都是“命名类型”。
【讨论】:
命名类型是您创建并命名的任何明确定义的类型(结构、类等)。
例如:
public class Foo
{
public string Bar{ get; set; }
}
在这种情况下,Foo 是一个命名类型。
这与匿名类型相反,匿名类型通常是动态创建的:
var MyFoo = new { Bar = "some text" };
我刚刚创建了一个名为 MyFoo 的新对象。我们没有显式地给它一个类型名称,但我们已经隐式地给它一个字符串属性 Bar,其值为“some text”。
【讨论】: