2012-06-26 59 views
0

我試圖將vb.net代碼轉換爲C#,但在其中一個函數中出現可選項。試圖將可選轉換爲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#是否具有相似的平衡性,還是我必須爲每個可能性創建方法?

回答

1

C#有一個等價的C#4:

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

請注意,你可能需要ref對於這裏的前兩個參數 - 您瞭解how parameter passing works in C#這一點很重要。

C#4同時具有命名參數可選參數。有關更多信息,請參閱MSDN。請注意,有各種限制,因爲可選參數必須在需要的參數之前(除了參數數組),並且默認值必須是常數(或者您可以使用default(...)運算符)。

+0

是啊,原來的程序員在他的VB代碼已經在那裏。我只是想把它轉換成C#。感謝您的鏈接 – nhat

1

您可以在C#中使用optional parameters

從MSDN:

每個可選參數都有一個默認值作爲其定義的一部分。如果沒有爲該參數發送參數,則使用默認值。默認值必須是以下表達式類型之一:

  • 一個常量表達式;

  • 表達形式新ValType(),其中ValType是值類型,如枚舉或結構;

  • 默認形式(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); 
    }