如何将我的类隐式转换为另一种类型?
Posted
技术标签:
【中文标题】如何将我的类隐式转换为另一种类型?【英文标题】:How can i implicitly convert my class to another type? 【发布时间】:2011-03-02 06:49:38 【问题描述】:例如隐式
MyClass myClass = new MyClass();
int i = myClass;
【问题讨论】:
从他的其他问题我猜是.net... 是的:)。我想这次我的问题没有答案,因为我们不能编辑封闭源类,所以我们不能为它们实现隐式运算符。 可能重复 [如何将另一个结构隐式转换为我的类型? ](***.com/questions/3015527/…) 为什么要这样做?在我从事 .NET 的 8 年中,我从来没有这样做过。如果你不能改变类,你总是可以添加一个 ToInt() 扩展方法。当然它更冗长,但我通常喜欢知道发生了什么。 XName 对字符串使用隐式转换,这使得工作更容易。例如 new XElement("person") 而不是 XElement(new XName("person")) 【参考方案1】:您需要在MyClass
文件中定义它。
public static implicit operator int(MyClass instance)
if (instance == null)
return -1;
return instance._underlyingValue;
【讨论】:
应该是int?
隐式转换,所以不需要有一个神奇的值吗?特别是如果 -1 可能是合法的基础值。我认为对于这种情况,如果无法进行转换,您可能希望返回 null 或抛出异常。 (显然你的答案符合规范,所以这更像是对规范的质疑,而不是答案。)
@Anthony - 原则上,我同意你的看法。在实践中,它高度依赖于所讨论的类。【参考方案2】:
class MyClass
public static implicit operator int(MyClass myClass)
// code to convert from MyClass to int
看看那里:implicit
【讨论】:
【参考方案3】:这个MSDN entry 涵盖了你想要的东西,应该可以解决问题。
【讨论】:
以上是关于如何将我的类隐式转换为另一种类型?的主要内容,如果未能解决你的问题,请参考以下文章