首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > VB.NET > 使用 IIF 該注意的問題
【标  题】:使用 IIF 該注意的問題
【关键字】:IIF
【来  源】:http://blog.joycode.com/fish/archive/2004/09/01/32129.aspx

使用 IIF 該注意的問題

1. 雖然IIF可簡化程式行數但效能不彰, 在循環測試下 iif = 0.002 sec, if = 0 sec
Dim _obj As Object = False
Dim result As Boolean
Dim _h As New HiResTimer
_h.StartTimer()
For i As Integer = 0 To 100
    result = CType(IIf((TypeOf _obj Is System.Boolean), CType(_obj, Boolean), False), Boolean)
Next
_h.StopTimer()
Debug.WriteLine(_h.ElapsedTime)
_h.StartTimer()
For i As Integer = 0 To 100
    If (TypeOf _obj Is System.Boolean) Then
        result = CType(_obj, Boolean)
    Else
        result = False
    End If
Next
_h.StopTimer()
Debug.WriteLine(_h.ElapsedTime)

2. IIF不適合作為型別檢查之判別
當 Dim _obj As Object = "ABC" 時取得評估為 False但仍會導致 CType(_obj, Boolean)發生型別轉換錯誤
因為雖然 IIF 所得為 FALSE 但仍會處理 TRUE的型別轉換因此導致錯誤發生
也因為無論TRUE或FALSE都會處理當中的 Expression 如此也失去了效能

3. IIF 所得TRUE或FALSE當中仍為 Expression 因此須注意返回值
result = CType(IIf((TypeOf _obj Is System.Boolean), result = CType(_obj, Boolean), result = False), Boolean)
所得的將會是 Expression (result = CType(_obj, Boolean))比對後返回結果

開啟 VS2003 專案升級至 VS2005 後的 My Project問題 (VB.NET版):【上一篇】
Code Library .NET 9.0 Beta 與 Blog 之應用:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 生产者-消费者问题的解决原理
  • ORA-12535
  • winXP sp2 MDAC 2.8 安装问题解决方法
  • PhotoImpact 7.0 特效-模糊与清晰
  • 【转载】Sql Server2005不同分页存储过程的性能对比
  • 论坛树状记录表的堆栈展开
  • 追逐色彩:打造令MM心动的文件夹
  • 事务死锁的问题如何解决?
  • Delphi中的线程类
  • 利用top取某个进程的CPU的脚本
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.