Según lo mencionado por @ChaosPandion, en ese caso específico usted devolvería una estructura DateTime
.
En general, sin embargo, que tendrían las siguientes opciones:
Usando out
parámetros
Esta es una forma sencilla que por lo general siempre trabajar. Sin embargo, es un poco torpe, ya que el resultado se devuelve donde normalmente se espera que se pasen los argumentos de la función y la firma del método puede ser larga y difícil de refactorizar.
public void GetTime(out int hr, out int min)
{
DateTime dt = DateTime.Now;
hr = dt.Hour;
min = dt.Minute;
}
static void Main(string[] args)
{
// declare variables for out parameters first
int hour, minute;
GetTime(out hour, out minute);
}
Usando un conjunto
Este es un método sencillo que funciona bien si los valores que ser devueltos tienen el mismo tipo.
public int[] GetTime()
{
DateTime dt = DateTime.Now;
return new[] { dt.Hour, dt.Minute};
}
Usando una bolsa de propiedades (A bolsa de propiedades es una clase simple que sólo tiene propiedades)
Esto es muy conveniente y permite una fácil modificación del tipo y número de valores devueltos más adelante sin cambiar la firma del método
class A
{
int Prop1 { get; set; }
int Prop2 { get; set; }
}
public A SomeMethod()
{
return new A() { Prop1 = 1, Prop2 = 2 }
}
Usando una tupla
En C# 4.0 (requiere VS 2010) se puede utilizar la clase Tuple<T1, T2, ...>
:
public Tuple<int, int> GetTime()
{
DateTime dt = DateTime.Now;
return Tuple.Create(dt.Hour, dt.Minute);
}
C# 7.0 Tuplas
C# 7.0 añade soporte para múltiples valores de retorno. Se puede escribir código como este para devolver una tupla creado implícitamente:
(string, string, string) LookupName(long id) // tuple return type
{
... // retrieve first, middle and last from data storage
return (first, middle, last); // tuple literal
}
Los elementos de tupla son nombres Item1
, Item2
, etc por defecto, pero también se puede especificar nombres, por ejemplo,
(string first, string middle, string last) LookupName(long id) // tuple return type
{
... // retrieve first, middle and last from data storage
return (first, middle, last); // tuple literal
}
y luego acceder a los elementos de tupla a través de esos nombres:
var names = LookupName(id);
WriteLine($"found {names.first} {names.last}.");
respuesta corta: NO, puede devolver varios valores en una matriz, lista, diccionario o cualquier colección –
¿Por qué no almacena 'DateTime.Now' en' mc' en su lugar y usa sus propiedades? – BrunoLM
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) – nawfal