我最近在 C# 中发现了强制转换运算符。现在我知道我可以覆盖运算符以允许:
byte b1 = new Foo();
byte b2 = (byte) new Foo();
但从Foo
消费者的角度来看,我不知道哪个更容易理解可以进行转换。我特别考虑的是将来会/将不得不维护我的代码的初级程序员(或者如果我几天前看到这个我会怎么想)。
一方面,隐式转换看起来有点奇怪。它看起来像分配不同的、不兼容的类型。并且 IDE 的智能感知不会告诉您有一种方法可以做到这一点而编译器不会抱怨。
另一方面,显式强制转换看起来像是强制转换。好的,这是告诉编译器“我知道我在做什么,不要抱怨”的一种方式。但是,一个无法访问Foo
's 代码(或不知道 C# 中存在强制转换运算符)的程序员如何才能执行强制转换并执行预期的操作呢?
在哪些情况下首选哪种类型的铸造?有第三种方法吗?