预定义类型和自定义类型之间的"对称性"是什么意思?

Inf*_*ero 3 c#

目前,我在Nutshell和Type Basics(位于第2章)子主题中阅读C#5.0,引入了预定义类型和自定义类型的对称性术语......

...为什么作者谈到这些类型之间的对称性?有什么理由说类型是对称的?

这是原始段落:

C#的一个很好的方面是预定义类型和自定义类型几乎没有差异.预定义的int类型用作整数的蓝图.它保存数据-32位 - 并提供使用该数据的函数成员,例如ToString.同样,我们的自定义UnitConverter类型充当单位转换的蓝图.它保存数据 - 比率 - 并提供功能成员使用该数据.

Jon*_*Jon 5

文本的含义是语言中的所有类型"表现得像对象".例如,您可以这样做:

int i = 42;
Console.WriteLine(i.ToString()); // called a method on an int
Run Code Online (Sandbox Code Playgroud)

尽可能容易地做到这一点:

DateTime d = DateTime.Now;
Console.WriteLine(d.ToString()); // called a method on a DateTime
Run Code Online (Sandbox Code Playgroud)

也就是说,如果您不知道类型,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"
Run Code Online (Sandbox Code Playgroud)

这里s.length()汇编的事实告诉我们这s不是一个int,或一个指针,或任何其他原始类型.

从技术的角度来看,这种统一性不会给你带来任何好处,但它仍然是一个受欢迎的功能 - 特别是如果你只是学习语言.