2012-06-26 3 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

Yea оригинальный программист имел его там в его VB кода. Я просто пытаюсь преобразовать его в C#. Спасибо за ссылки – nhat

1

У вас может быть optional parameters в C#.

Из MSDN:

Каждый дополнительный параметр имеет значение по умолчанию как часть его определения. Если для этого параметра не передается аргумент, используется значение по умолчанию. Значение по умолчанию должно быть одним из следующих типов выражений:

  • постоянное выражение;

  • выражение формы new 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); 
    } 
Смежные вопросы