【发布时间】:2016-02-01 10:22:54
【问题描述】:
在像下面这样的自定义类型中实现CType 运算符时,该类型不能使用DirectCast 运算符进行强制转换:
Public Structure ColorInfo
...
Public Shared Widening Operator CType(ByVal colorInfo As ColorInfo) As Color
Return Color.FromArgb(colorInfo.R, colorInfo.G, colorInfo.B)
End Operator
...
End Structure
另一方面,它可以直接分配给Color 对象,这非常令人困惑:
Dim obj As color = MyColorInfo
然后,我想首先实现DirectCast 运算符,以便在我的环境中获得打字舒适度(而不是使用CType),其次是为了获得解释 MSDN 文档的好处(如果有的话)here:
DirectCast 不使用 Visual Basic 运行时帮助程序例程 转换,因此它可以提供比 CType 更好的性能 与数据类型 Object 相互转换时。
如何在 C# 或 Vb.Net 中实现它?
【问题讨论】:
-
考虑
TryCast方法 -
@Fabio 感谢您的评论,但我不喜欢 TryCast 的行为,因为如果转换失败,它不会引发异常。
标签: c# .net vb.net casting type-conversion