HiiМетод должен возвращать несколько значений
У меня есть метод в C#, мне нужно вернуть несколько значений из этого метода, используя коллекции, такие как массивы. Есть ли надежный способ?
HiiМетод должен возвращать несколько значений
У меня есть метод в C#, мне нужно вернуть несколько значений из этого метода, используя коллекции, такие как массивы. Есть ли надежный способ?
Ну, вы могли бы использовать:
out
параметрыIe:
class MyValues
{
public string Val1 { get; set; }
public int Val2 {get; set; }
}
public MyValues ReturnMyValues();
или
public void ReturnMyValues(out string Val1, out int Val2);
Да может создать новый тип, который будет содержать несколько свойств, а затем вернуть этот тип:
public MyType MyMethod()
{
return new MyType
{
Prop1 = "foo",
Prop2 = "bar"
};
}
Да, out
ключевое слово:
public void ReturnManyInts(out int int1, out int int2, out int int3)
{
int1 = 10;
int2 = 20;
int3 = 30;
}
тогда называть это так:
int i1, i2, i3;
ReturnManyInts(out i1, out i2, out i3);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(i3);
, который выдает:
10
20
30
EDIT:
Я вижу, что много сообщений предполагают, чтобы создать свой собственный класс для этого. Это необязательно, так как .net предоставляет вам класс, чтобы делать то, что они говорят уже. Класс Tuple
.
public Tuple<int, string, char> ReturnMany()
{
return new Tuple<int, string, char>(1, "some string", 'B');
}
, то вы можете получить его следующим образом:
var myTuple = ReturnMany();
myTuple.Item1 ...
myTuple.Item2 ...
существуют общие перегрузки, так что вы можете иметь до 8 уникальных типов в вашем наборе.
Кроме того, метод 'Tuple.Create' может вызывать типы:' return Tuple.Create (1, "some string", 'B'); ' –
Обратите внимание, что Tuple - это новая функция .NET 4.0, которые Джибу не могут (пока) иметь. –
Класс дескриптора или структура. Вы должны поместить его где-нибудь, так как логично, что метод должен возвращать только одно значение. В качестве альтернативы вы можете использовать out или ref, но я бы вернулся в класс.
Btw, что удерживает вас, чтобы не использовать коллекции ?.
Если вы используете .NET 4.0 вы можете использовать один из классов generic Tuple для возврата нескольких значений из вызова метода. Статический класс Tuple предоставляет методы создания объектов Tuple. Таким образом, вам не нужно определять свой собственный тип возврата для метода.
public Tuple<string,int> Execute()
{
return new Tuple<string,int>("Hello World", 2);
}
Только незначительная точка: все 8 типов Tuple являются общими для C# 4.0. – Kobi
public int Method Name(out string stringValue, out int intValue)
{
///
Method goes here
///
return intVaraible
}
здесь вы получите 3 Возвращаемые значения 1. stringValue 2. intValue 3. intVariable
Можете ли вы расширить "несколько значений"? Является ли это постоянным числом ваших возвращаемых значений? Связаны ли они логически? Что они представляют? Являются ли они одного типа? – Kobi
Возможный дубликат [Как вернуть несколько значений из функции в C#?] (Http://stackoverflow.com/questions/748062/how-can-i-return-multiple-values-from-a-function-in -c) –