0

我正在尝试将 vb.net 代码转换为 C#,但在其中一个函数中遇到了可选的。

Private Function doOpenConnection(ByRef cn As OleDb.OleDbConnection, ByRef cmd As OleDb.OleDbCommand, ByVal sConnString As String, Optional ByVal sUSP As String = "") As Boolean

VB.Net 似乎没有使用重载,而是可以选择将其创建为一个方法/函数。C# 是否有类似的等价物,还是我必须为每种可能性创建一个方法?

4

2 回答 2

1

C# 具有与 C# 4 相同的功能:

private bool doOpenConnection(ref OleDb.OleDbConnection cn,
                              ref OleDb.OleDbCommand cmd,
                              string sConnString,
                              string sUSP = "")

请注意,您可能不需要这里ref的前两个参数 - 了解参数传递在 C#中的工作原理很重要。

C# 4 有命名参数可选参数。有关详细信息,请参阅MSDN。请注意,有各种限制,因为可选参数必须位于必需参数之前(除了参数数组),并且默认值必须是常量(或者您可以使用default(...)运算符)。

于 2012-06-26T15:34:08.910 回答
1

您可以在 C#中使用可选参数。

来自 MSDN:

每个可选参数都有一个默认值作为其定义的一部分。如果没有为该参数发送任何参数,则使用默认值。默认值必须是以下表达式类型之一:

  • 一个常量表达式;

  • new ValType() 形式的表达式,其中 ValType 是值类型,例如枚举或结构;

  • default(ValType) 形式的表达式,其中 ValType 是值类型。

可选参数定义在参数列表的末尾,在任何必需参数之后。如果调用者为连续可选参数中的任何一个提供参数,则它必须为所有前面的可选参数提供参数。不支持参数列表中以逗号分隔的空格。例如,在下面的代码中,实例方法 ExampleMethod 定义了一个必需参数和两个可选参数。

    public void ExampleMethod(int required, string optionalstr = "default string",
        int optionalint = 10)
    {
        Console.WriteLine("{0}: {1}, {2}, and {3}.", _name, required, optionalstr,
            optionalint);
    }
于 2012-06-26T15:34:38.417 回答