HiiEl método debe devolver varios valores
Tengo el método en C#, tengo que devolver varios valores de ese método sin usar colecciones como matrices. ¿Hay alguna manera confiable?
HiiEl método debe devolver varios valores
Tengo el método en C#, tengo que devolver varios valores de ese método sin usar colecciones como matrices. ¿Hay alguna manera confiable?
Bueno, se podría utilizar:
out
parámetrospor ejemplo:
class MyValues
{
public string Val1 { get; set; }
public int Val2 {get; set; }
}
public MyValues ReturnMyValues();
o
public void ReturnMyValues(out string Val1, out int Val2);
Sí podría crear un nuevo tipo que contendrá múltiples propiedades y luego regresar este tipo:
public MyType MyMethod()
{
return new MyType
{
Prop1 = "foo",
Prop2 = "bar"
};
}
Sí, el out
palabra clave:
public void ReturnManyInts(out int int1, out int int2, out int int3)
{
int1 = 10;
int2 = 20;
int3 = 30;
}
luego llamar así:
int i1, i2, i3;
ReturnManyInts(out i1, out i2, out i3);
Console.WriteLine(i1);
Console.WriteLine(i2);
Console.WriteLine(i3);
que salidas:
10
20
30
EDIT:
que estoy viendo que una gran cantidad de puestos están sugiriendo a crear su propia clase para esto. Esto no es necesario ya que .net te proporciona una clase para hacer lo que ya están diciendo. La clase Tuple
.
public Tuple<int, string, char> ReturnMany()
{
return new Tuple<int, string, char>(1, "some string", 'B');
}
entonces se puede recuperar de este modo:
var myTuple = ReturnMany();
myTuple.Item1 ...
myTuple.Item2 ...
hay sobrecargas genéricos para que pueda tener hasta 8 tipos únicos en su tupla.
Además, el método 'Tuple.Create' puede inferir los tipos:' return Tuple.Create (1, "some string", 'B'); ' –
Tenga en cuenta que Tuple es una nueva característica de .NET 4.0, cuál Jibu puede no (todavía) tener. –
A Clase descriptiva, o estructura. Debe colocarlo en alguna parte ya que es lógico que un método debe devolver solo un valor. Alternativamente puede usar out o ref, pero iría devolviendo una clase.
Btw ¿Qué le impide usar colecciones?
Si está utilizando .NET 4.0 puede usar una de las clases generic Tuple para devolver múltiples valores de una llamada a método. La clase estática Tuple proporciona métodos para crear objetos Tuple. Por lo tanto, no es necesario que defina su propio tipo de devolución para el método.
public Tuple<string,int> Execute()
{
return new Tuple<string,int>("Hello World", 2);
}
Sólo un punto menor: los 8 tipos de Tuple son genéricos en C# 4.0. – Kobi
public int Method Name(out string stringValue, out int intValue)
{
///
Method goes here
///
return intVaraible
}
aquí obtendrá 3 Valores devueltos 1. stringValue 2. intValue 3. intVariable
Puede usted por favor ampliar el "múltiples valores"? ¿Es un número constante de sus valores de retorno? ¿Están vinculados lógicamente? ¿Qué representan? ¿Están en el mismo tipo? – Kobi
Posible duplicado de [¿Cómo puedo devolver múltiples valores desde una función en C#?] (Http://stackoverflow.com/questions/748062/how-can-i-return-multiple-values-from-a-function-in -c) –