【发布时间】:2009-12-13 07:53:26
【问题描述】:
有时我必须实现一个接口或继承一个基本方法需要一个对象的虚拟 (MustInherit),而我知道我将传递的值将始终是一个整数。
以下示例的最佳性能应该是什么:
Public Sub DoSomething(ByVal obj As Object)
'option 1:
Dim x As Integer = obj
'option 2:
Dim y = DirectCast(obj, Integer)
End Function
注意事项:
- 选项 1:不进行强制转换,但可能不太合适,是否会降低性能?
- 选项 2:在类型已知但感觉更安全的情况下进行转换。
注意:请不要评论“你为什么不想以不同的方式实现它”等等。 我的问题不是如何做到这一点,我没有找到如何问的例子,我的问题是什么选项应该是正确的,什么会花费更多的性能。
【问题讨论】:
-
如果你声称实现了接口,那么你应该准备好接受任何对象。否则,您并没有真正实现接口。
-
再次,我说界面的事情只是我提出问题的一个理由。
-
一个实际的例子是当你重写一个类并将它标记为 NotInheritable(密封)。另一个很好的例子是当你实现 IValueConversion 时。
标签: vb.net casting performance implicit directcast