VB6中IIf函数在if语句应用上的独特优势是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计272个文字,预计阅读时间需要2分钟。
使用IIf而非If通常不会带来性能优势。除了简单的代码外,两者主要的区别在于IIf仅能返回两个值中的一个,而If语句可以执行更复杂的逻辑。以下是对您提供代码的简化版本:
vbaIf msInitialFloodSection=Trim(cboFloodSection.Text) Then mbFloodSectionChanged=TrueElse mbFloodSectionChanged=FalseEnd If
使用IIf而不是If有性能优势吗?除了简单的代码之外……有什么区别:
If msInitialFloodSection <> Trim$(cboFloodSection.Text) Then mbFloodSectionChanged = True Else mbFloodSectionChanged = False End If
和
mbFloodSectionChanged = IIf(msInitialFloodSection <> Trim$(cboFloodSection.Text), True, False) IIf不是运算符或语言结构,它是一个函数,就像任何其他函数一样,如Left.因此,它将始终评估其所有参数,而如果您只评估正确的分支.
例:
denominator = 0 value = IIf(denominator = 0, 0, value / denominator)
尽管分母为零,但仍存在单独的分支,这将使Divizion提高零误差.
关于性能,它将要做的是将你的价值包装到Variants中,这将需要额外的滴答,而不是那么多,但是如果我们在表现,那么If会更快,因为它不会通过Variants强迫事物,因为它只计算其中一个值,而不是两个.
本文共计272个文字,预计阅读时间需要2分钟。
使用IIf而非If通常不会带来性能优势。除了简单的代码外,两者主要的区别在于IIf仅能返回两个值中的一个,而If语句可以执行更复杂的逻辑。以下是对您提供代码的简化版本:
vbaIf msInitialFloodSection=Trim(cboFloodSection.Text) Then mbFloodSectionChanged=TrueElse mbFloodSectionChanged=FalseEnd If
使用IIf而不是If有性能优势吗?除了简单的代码之外……有什么区别:
If msInitialFloodSection <> Trim$(cboFloodSection.Text) Then mbFloodSectionChanged = True Else mbFloodSectionChanged = False End If
和
mbFloodSectionChanged = IIf(msInitialFloodSection <> Trim$(cboFloodSection.Text), True, False) IIf不是运算符或语言结构,它是一个函数,就像任何其他函数一样,如Left.因此,它将始终评估其所有参数,而如果您只评估正确的分支.
例:
denominator = 0 value = IIf(denominator = 0, 0, value / denominator)
尽管分母为零,但仍存在单独的分支,这将使Divizion提高零误差.
关于性能,它将要做的是将你的价值包装到Variants中,这将需要额外的滴答,而不是那么多,但是如果我们在表现,那么If会更快,因为它不会通过Variants强迫事物,因为它只计算其中一个值,而不是两个.

