当类型可以转换为另一种类型并且没有数据损失时,应该定义隐式转换。另一个标准是,隐式转换应该相对便宜,因为使用您的类的开发人员可能不知道何时发生隐式转换。例如,坐标系之间的转换。例如,可以将极坐标向量转换为笛卡尔坐标,但由于浮点舍入误差,最好仍将其作为显式转换留下来,以便程序员必须进行强制转换。如果您有两种数据类型,它们以相同的格式存储数据,但唯一区别在于语义-它们如何使用或表示什么。现实世界的例子:在具有相同(或兼容)基础表示的datetime数据类型之间进行转换,但仅在epoc开始日期方面有所不同。当将旧代码库迁移到新框架时,您会发现这些情况,其中两个都定义了datetime类型,但语义略有不同。在这里进行隐式转换(假设完全没有数据损失)可能是可以的,并且是个好主意。如果您有一组类型,并且已经定义了它们之间可以如何转换的规则,则其中一些转换可能是隐式的,而另一些可能是显式的,具体取决于转换的“严重程度”。我在.NET中实现类时使用隐式转换的主要实例是在实现Delphi运行时库的Win32 Variant语义时。 Win32和Delphi语言指定了可以对Variant数据进行的许多转换,这些转换可以隐含地完成。您没有发现需要创建隐式转换实际上是一件好事。仅因为您可以并不意味着您应该这样做。隐式转换主要存在于.NET中,以便不同的编程语言可以以可互操作且可理解其他.NET语言的方式表示自己的语义。