大佬教程收集整理的这篇文章主要介绍了有没有办法在VB.NET中定义隐式转换运算符?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在VB.NET中,您可以定义一个CType转换运算符,将明确地将用户定义的类型转换为另一种类型。
有没有办法在VB.NET中声明一个隐式转换运算符?
我似乎找不到任何这方面的信息….
回答
我在Widening
运算符的MSDN文档中找到了我的答案。显然,CType Widening运算符被“调用”用于隐式转换,而CType Narrowing
运算符被称为显式转换。
起初,我认为这个文档是不正确的,因为我在测试过程中遇到异常。我重新测试了一些非常奇怪的东西。当使用“=”运算符完成隐式转换时,我作为扩展转换运算符实现的功能正常工作。
例如,以下内容会将Something类型隐式转换为MyClass。它正确地调用我的扩展转换实现,一切正常工作:
Dim y As Something Dim x As MyClass = y
但是,如果隐式转换在foreach循环中完成,则它不起作用。
例如,以下代码将抛出异常(“For Each循环中将Something类型隐式转换为MyClass时,无法将类型为”Something“的对象转换为类型”MyClass“):
Dim anArrayOfSomethingTypes() As Something = getArrayOfSomethings() For Each x As myType In anArrayOfSomethingTypes .... Next
对此的任何见解都非常感激。
Class C1 Public Shared Widening Operator CType(ByVal p1 As C1) As C2 End Operator End Class
相反,一个显式的转换,可以通过在上述定义中交换“扩大扩展”来完成。
以上是大佬教程为你收集整理的有没有办法在VB.NET中定义隐式转换运算符?全部内容,希望文章能够帮你解决有没有办法在VB.NET中定义隐式转换运算符?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。