вернуть более одного вывода на C # - PullRequest
2 голосов
/ 03 декабря 2010

как я могу вернуть более одного типа в функции c #, как я хочу вернуть строку и данные?

Ответы [ 5 ]

3 голосов
/ 03 декабря 2010

использовать параметры ref или out

параметр ref: требуется инициализация методом вызывающего абонента.

public string ReturnName(ref int position)
{
     position = 1;
     return "Temp"
}


public string GetName()
{
     int i =0;
     string name = ReturnName(ref i);
     // you will get name as Temp and i =1

}


// best use out parameter is the TryGetXXX patternn in various places like (int.TryParse,DateTime.TryParse)
 int i ;
 bool isValid = int.TryParse("123s",out i);
3 голосов
/ 03 декабря 2010

Самый простой ответ - использовать свойство DataTable TableName.

Более общий ответ - использовать Tuple<DataTable, string> или написать класс или структуру.

2 голосов
/ 03 декабря 2010

Вы можете определить свой собственный класс для использования в качестве типа возвращаемого значения:

class MyReturnType
{
  public string String { get; set; }

  public DataTable Table { get; set; }
}

и вернуть его экземпляр.Вы можете использовать Tuple, но часто лучше иметь значимые имена типов и свойств, особенно если над программным обеспечением будет работать кто-то еще.

Или вы можете использовать параметр out в функции.1007 *

Ваш путь зависит от того, что подходит для вашей ситуации.Если строка и DataTable являются двумя частями одного и того же, класс имеет смысл.Если строка для сообщения об ошибке при создании DataTable терпит неудачу, параметр out может быть более подходящим.

2 голосов
/ 03 декабря 2010

Использовать выходной параметр:

public string Function(out DataTable result)

Назовите это так:

DataTable table;
string result = Function(out table);
1 голос
/ 03 декабря 2010

используйте кортеж в качестве возврата.

...