你多久创建一次隐式转换?

我一直在开发.NET应用程序4年。 到目前为止,我不需要为我创作的类创建任何隐式转换。
如果不创建隐式转换,您可以提供真实的情况吗?

谢谢


隐式转换只能在类型可以转换为或从其他类型转换(最好是转换为另一类型)并且不丢失数据的情况下定义。 另一个标准是隐式转换应该相当便宜,因为使用您的类的开发人员可能不会意识到隐式转换何时发生。

一个例子是坐标系之间的转换。 例如,可以转换为笛卡尔坐标的极坐标矢量可能很方便。 但是,由于浮点数的四舍五入,最好将其作为明确的转换,以便程序员必须强制转换。

如果您有两种以相同格式存储数据的数据类型,但隐式转换可能是有保证的,但这两种类型之间的唯一区别是语义 - 它们是如何使用的或它们的含义。 真实世界示例:具有相同(或兼容)底层表示但仅在epoc开始日期不同的日期时间数据类型之间进行转换。 当将旧的代码库迁移到新的框架时,你会发现这些框架都定义了一个日期时间类型,但语义略有不同。 这里的隐式转换(假设根本没有数据丢失)可能是好的,也是一个好主意。

如果您有一组类型,并且您已经定义了自己的规则以了解类型可以如何在相互之间进行转换,那么其中一些转换可能是隐式的,并且取决于转换的“严重性”可能会有一些明确的转换。 在.NET中实现类时,我使用隐式转换的主要实例是当我为Delphi运行时库实现Win32 Variant语义时。 Win32和Delphi语言在Variant数据上指定了许多可以隐含完成的转换。

您没有发现需要创建隐式转换实际上是一件好事。 只因为你可以不意味着你应该。 .NET中存在隐式转换,主要是为了允许不同的编程语言以一种应该可以通过其他.NET语言进行交互操作和理解的方式来表示它们自己的语义。

链接地址: http://www.djcxy.com/p/45289.html

上一篇: How often do you create implicit conversions for your classes?

下一篇: Rewriting a for loop in pure NumPy to decrease execution time