搜索: 标题内容作者  
  首页VB.NET教程VB.NET进阶教程
背景:
阅读新闻

确定是否提供了可选参数的方法

[日期:2008-03-12]   来源:microsoft  作者:msdn   [字体: ]
    新闻简介:当过程定义可选参数时,可能需要确定调用代码是否已经提供对应的参数或省略此参数。
如果参数值与其默认值相等,则可能是由于以下两种原因之一:
调用代码在过程调用中省略此参数;或者
调用代码提供的参数与参数的默认值完全相等。
过程代码无法区分这两种可能性。通常这样没有什么
        关 键 词:  

当过程定义可选参数时,可能需要确定调用代码是否已经提供对应的参数或省略此参数。

如果参数值与其默认值相等,则可能是由于以下两种原因之一:

  • 调用代码在过程调用中省略此参数;或者

  • 调用代码提供的参数与参数的默认值完全相等。

过程代码无法区分这两种可能性。通常这样没有什么影响,但有些情况过程可能需要对每种可能性执行不同的操作。最好的方法就是定义与默认值不同的值,尽管这样不能保证调用代码无法提供此值。

如果确定调用程序是否提供可选参数十分重要,则最安全的方法就是定义过程的重载版本。请参见 如何:定义一个过程的多个版本 和 重载过程注意事项。

确定是否已将变量传递给可选参数

  1. 定义与参数的默认值完全不同的值。

  2. 如果可选参数是像 String 这样的引用类型,则可以使用 Nothing 作为默认值,除非它正好是变量期待的值。

  3. 在过程代码中比较此参数和默认值,并执行适当的操作。

下面的过程定义一个可选参数 office,并测试其默认值 QJZ,以查看它是否在调用中被省略。

Visual Basic
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

如果调用代码没有在参数列表中为 office 提供值,则 Visual Basic 将提供默认值“QJZ”。

如果可选参数是像 String 这样的引用类型,则可以使用 Nothing (Visual Basic) 作为默认值,除非它是变量期待的值。

有关如何使用重载确定是否已传递可选参数的示例,请参见 如何:重载带有可选参数的过程。

If you believe an article violates your rights or the rights of others, please contact us.

收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻      
友情链接
本文评论   [发表评论] 全部评论 (0)
赞助商广告
热门评论