目前尚不清楚 中的身份转换到底是什么C#。微软说:
身份转换 身份转换可以从任何类型转换为相同类型。这种转换的存在使得已经具有所需类型的实体可以说可以转换为该类型。
因为对象和动态被认为是等效的,所以对象和动态之间以及用对象替换所有出现的动态时相同的构造类型之间存在身份转换。
很高兴看到 C# 中使用某些自定义类型进行此类转换的一些示例,以了解它到底是什么、它的局限性以及与其他类型的转换相比的优点。
正如问题中的引用所述,这只是类型 X 到自身的转换。IE,
string x = (string) "Hello";
Run Code Online (Sandbox Code Playgroud)
甚至只是:
string x = "Hello";
Run Code Online (Sandbox Code Playgroud)
它本质上只是一个无操作转换。
如前所述,“这种转换的存在使得已经具有所需类型的实体可以说可以转换为该类型。” 因此,从本质上讲,规范给出的理由是它使编写规范变得更容易;作者可以说“这样那样的表达式 X 隐式转换为类型 Y”,即使 X 已经是 Y。
正如安德鲁的回答所指出的,and有一个特殊情况,因为后者实际上是在运行时。objectdynamicobject
(这个答案最初指出了类似语言 Java 的基本原理,但我觉得它不完整,并且仅基于 C# 规范就可以对 C# 说同样的事情。)