当我在Form上有许多控件(即Label,Button等)几乎完全相同时,我经常使用一种方法来处理所有控件Click,MouseDown,MouseUp事件。
但要知道哪个控件抛出事件并访问该控件的属性,我需要将“sender”对象强制转换为正确的类型。
问题是我总是知道它是哪种类型,我不需要“TryCast”,“DirectCast”并检查操作是否返回true。我有时也使用CType。
Dim btn as Button = CType(sender, Button)
btn.Txt = "Pushed"
当我已经知道控件的类型时,我想找到最快的转换方法,我知道有一个Button事件调用我的方法,并且像将转发器对象转换为Button控件的最快方法。
有什么建议吗?
答案 0 :(得分:9)
我使用DirectCast
,因为它最明确地表达了你的意图:你知道对象实际上是正确的类型;您不需要执行任何转换,并且您希望执行它们:如果类型错误,则表示错误并且应该抛出异常,对吧?
为什么你这么担心表现呢?我怀疑 DirectCast
至少与替代品一样快,但如果我们在这里谈论用户互动,那么与人类反应时间相比,演员阵容将是微不足道的。清晰的代码几乎总是比绝对最快的做事方式更重要。
答案 1 :(得分:3)
除了Jon提到的意图外,DirectCast
也是最快的方法。更多信息请参见Hidden Features of VB讨论。