【问题标题】:How can I create an explicit conversion from ThatType to ThisType by adding the conversion operator to ThisType如何通过将转换运算符添加到 ThisType 来创建从 ThatType 到 ThisType 的显式转换
【发布时间】:2016-03-10 16:26:12
【问题描述】:

所以,我有一个类,我希望能够从 ThatType 显式转换为 ThisTypes。将 ThisType 显式转换为 ThatType 非常简单,只是...

public static explicit operator ThatType (ThisType operand)
{
   return /*Some voodoo that creates a new ThatType logically equivalent to ThisType*/
}

可能只是我,但我认为没有直接的方法可以做相反的事情。我想采用 ThatType 并将其显式转换为 ThisType。我可以在修改 ThisType 时执行此操作,还是必须有权访问 ThatType 的代码?如果是后者,是否不可能从 ThatTypeThatType 创建显式转换,由库提供,例如 Dictionary

【问题讨论】:

  • 你可以花 30 秒来编写代码,编译它,然后找出答案。比写这个问题花费的时间要少得多。
  • @Servy 这可能完全正确,但问题是我不知道从哪里开始。 =/ 我不怀疑这很容易,但是换油、编织篮子、陶器或焊接如果你知道如何
  • 但是您已经知道如何创建从一种类型到另一种类型的显式转换。我知道您知道这一点,因为您在问题中展示了如何执行此操作的代码。您只需要调整要执行的转换的类型,然后您就可以确定它是否有效。
  • @Servy 谢谢你,虽然我认为你可以从类型的定义中创建到类型的那种转换并不是很明显。不幸的是,大多数谷歌搜索和研究返回的结果都是从 ThisType 到 ThatType,但不是相反。如果您想发布它作为答案,我会接受它,否则我会发布它。

标签: c# casting explicit-conversion


【解决方案1】:

您不需要访问代码。切换 ThatType 和 ThisType(因此 ThatType 是参数)允许您定义运算符。

作为一些测试代码:

class A { ... }
class B {
    static implicit operator B (A operand) { ... }

    static void Main() { B b = new A() // works }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多