2009-09-02 37 views
6

何时可以安全使用隐式转换?什么时候应该使用隐式投射?

使用案例:我正在处理一组需要专门照顾的com对象(Marshal.ReleaseComObject)。是否可以创建一个隐式转换回实际com对象的包装类?

有什么情况当我不应该使用隐式转换?

+4

只是挑剔:不存在“隐式转换”没有这样的事。您可以使用*转换操作符*来告诉编译器执行*显式转换*,或者可以省略转换操作符并执行*隐式转换*,但不存在*隐式转换*。 * cast *是出现在源代码中的东西;如果它没有出现,那么就没有* cast *。 – 2009-09-02 19:34:40

回答

1
  1. 您需要执行此操作很多。
  2. 没有办法避免演员阵容。
  3. 作为转换/投影功能并不能更好地表现出来。换句话说,在剧组之后它必须是“同一个对象”。
  4. 您可以往返原始对象。 (但并不隐含)
  5. 它不会混淆现有的或将来的函数重载。

我平时总结这些点为“从不”,但讽刺你的使用情况实际上听起来像一个郎中......

3

您应该在(且仅当)确认以下情况时使用隐式转换:
1.转换时没有信息(数据)丢失(或可能丢失)。
2.不会抛出异常。
3.不会发生静默失败(您将收到退化的数据)。

相关问题