C# “是什么意思?”;对称性“;在预定义类型和自定义类型之间?

C# “是什么意思?”;对称性“;在预定义类型和自定义类型之间?,c#,C#,目前,我正在阅读《C#5.0简而言之》和《类型基础》(位于第2章)子主题中介绍了预定义类型和自定义类型的术语对称性 …为什么作者谈论这些类型之间的对称性?说类型是对称的论点是什么 这是原文: C#的一个优点是预定义类型和自定义类型几乎没有区别。预定义的int类型用作整数的蓝图。它保存数据(32位),并提供使用该数据的函数成员,如ToString。类似地,我们的自定义UnitConverter类型充当单位转换的蓝图。它保存数据(比率),并提供函数成员使用该数据 文本的意思是,语言中的所有类型都“表

目前,我正在阅读《C#5.0简而言之》和《类型基础》(位于第2章)子主题中介绍了预定义类型和自定义类型的术语对称性

…为什么作者谈论这些类型之间的对称性?说类型是对称的论点是什么

这是原文:

C#的一个优点是预定义类型和自定义类型几乎没有区别。预定义的int类型用作整数的蓝图。它保存数据(32位),并提供使用该数据的函数成员,如ToString。类似地,我们的自定义UnitConverter类型充当单位转换的蓝图。它保存数据(比率),并提供函数成员使用该数据


文本的意思是,语言中的所有类型都“表现得像对象”。例如,您可以执行以下操作:

int i = 42;
Console.WriteLine(i.ToString()); // called a method on an int
DateTime d = DateTime.Now;
Console.WriteLine(d.ToString()); // called a method on a DateTime
尽可能轻松地执行此操作:

int i = 42;
Console.WriteLine(i.ToString()); // called a method on an int
DateTime d = DateTime.Now;
Console.WriteLine(d.ToString()); // called a method on a DateTime
也就是说,如果您不知道
i
d
的类型,那么您将无法通过读取调用
.ToString()
的代码来推断任何内容

将此与C++之类的语言进行对比:

std::string s = "hello";
std::cout << s.length();

int i = 42;
// ...but you cannot invoke any method on i; "ints are special"
std::string s=“hello”;

std::cout有些语言无法创建与内置的类似的类型,如
int
。在C#中,可以创建所有属性都为“int”的类型(它是
System.Int32
)的同义词,即带+/-/=操作的值类型


也就是说,在JavaScript中不能创建另一个
数组
类型或
字符串
类型。在Java中,值类型是不存在的,因此程序员()不能编写与“int”等价的类型。

我相信作者的观点是,内置类型和自定义类型都用于类似的目的;保存数据并提供使用该数据的机制。我相信其中还有一个隐藏的引用,即内置对象和自定义对象都继承自
System.Object
,因此它们具有相似的功能(即
ToString()


我不一定同意“对称”这个词,但这是我在这个主题上的两分钱。

第二章不是类型基础…事实上,没有一章叫做类型基础。页码?同样,这类问题也不适用于SO。@newStackExchangeInstance:第2章中有一节叫做“类型基础”(实际上是第15页)。从描述中推断并不难。@Jon在编辑中不是这样的。它过去常说chapter.@newStackExchangeInstance“这类问题不适合这样”为什么不呢?