我最近在C#中发现了铸造操作符。现在我知道我可以重写操作成实现:隐式与显式铸造操作员最佳实践
byte b1 = new Foo();
byte b2 = (byte) new Foo();
但从一个消费者Foo
我不知道这将是更容易理解,一个转换可制成点。我特别想到那些将来必须维护我的代码的初级程序员(或者如果我前几天看到过这种情况,我会怎么想)。
一方面隐式转换看起来有点奇怪。它看起来像分配不同的不兼容类型。 IDE的intellisense不会告诉你有一种方法可以在编译器不抱怨的情况下做到这一点。
另一方面,显式转换看起来像强制转换。好吧,这是一种告诉编译器“我知道我在做什么,不要抱怨”的方式。但是如何让程序员无法访问Foo
的代码(或者不知道C#中的转换操作符存在),以便执行转换并执行某些预期的操作?
在哪种情况下,哪种类型的铸件更受欢迎?有第三种方法吗?
我会使用隐式投射只有当没有信息从'int'到'long'丢失。 – Jehof
这取决于上下文,否则它的意见。 – Jodrell
我只想扩展一个建议:不要构建代码来适应后辈,只要确保它是干净的,易于阅读和记录良好的,未来的开发人员应该能够在代码中阅读您的注释,并确定它是一个演员,和*为什么*你正在铸造它。 –