Restituire più valori da una funzione in C#

Muhammad Maisam Abbas 16 febbraio 2024
  1. Restituisce più valori da una funzione con gli array in C#
  2. Restituisce più valori da una funzione con gli oggetti struttura / classe in C#
  3. Restituisce più valori da una funzione con la classe Tuple<T1, T2> in C#
  4. Restituire più valori da una funzione con la notazione (T1,T2) in C#
Restituire più valori da una funzione in C#

Questo tutorial introdurrà i metodi per restituire più valori da una funzione in C#.

Restituisce più valori da una funzione con gli array in C#

La struttura dati array memorizza più valori dello stesso tipo di dati in C#. Possiamo usare gli array per restituire più valori da una funzione. L’esempio di codice seguente mostra come usare gli array per restituire più valori da una funzione in C#.

using System;

namespace return_multipe_values {
  class Program {
    public static int[] compare(int a, int b) {
      int[] arr = new int[2];
      if (a > b) {
        arr[0] = b;
        arr[1] = a;
      } else {
        arr[0] = a;
        arr[1] = b;
      }
      return arr;
    }
    static void Main(string[] args) {
      int[] returnvalue = Program.compare(10, 12);
      Console.WriteLine("Smaller Value = {0}", returnvalue[0]);
      Console.WriteLine("Larger Value = {0}", returnvalue[1]);
    }
  }
}

Produzione:

Smaller Value = 10 Larger Value = 12

Abbiamo restituito 2 valori interi dalla funzione compare() con il tipo di ritorno dell’array in C#. Questo metodo è utile se devi restituire più valori dello stesso tipo di dati. Se si desidera restituire più valori di diversi tipi di dati, non è possibile utilizzare un array perché un array memorizza solo i valori dello stesso tipo di dati.

Restituisce più valori da una funzione con gli oggetti struttura / classe in C#

Le Strutture e Classi vengono utilizzate per raggruppare i valori correlati. I valori non devono essere dello stesso tipo di dati. Quindi, possiamo usare una struttura o un oggetto classe per restituire più valori da una funzione in C#. L’esempio di codice seguente mostra come utilizzare un oggetto struttura per restituire più valori da una funzione in C#.

using System;

namespace return_multipe_values {
  struct Values {
    public int x;
    public int y;
  }

  class Program {
    public static Values comparevalues(int a, int b) {
      Values V = new Values();
      if (a > b) {
        V.x = b;
        V.y = a;
      } else {
        V.x = a;
        V.y = b;
      }
      return V;
    }
    static void Main(string[] args) {
      Values returnedvalues = Program.comparevalues(10, 12);
      Console.WriteLine("Smaller Value = {0}", returnedvalues.x);
      Console.WriteLine("Larger Value = {0}", returnedvalues.y);
    }
  }
}

Produzione:

Smaller Value = 10 Larger Value = 12

Per prima cosa definiamo una struttura, Values, contenente i valori che vogliamo restituire dalla nostra funzione. Abbiamo quindi restituito più valori dalla funzione comparevalues() con la struttura Values come tipo di ritorno in C#. I valori restituiti devono anche essere memorizzati in un’istanza della stessa struttura.

Questo obiettivo può essere raggiunto anche utilizzando una classe come tipo di ritorno della funzione. Il codice seguente mostra come utilizzare una classe per restituire più valori da una funzione in C#.

using System;
public class Sample {
  int x;
  int y;
  public void setxy(int v, int u) {
    x = v;
    y = u;
  }
  public void getxy() {
    Console.WriteLine("The smaller value = {0}", x);
    Console.WriteLine("The greater value = {0}", y);
  }
}
public class Program {
  public static Sample compare(int a, int b) {
    Sample s = new Sample();
    if (a > b) {
      s.setxy(b, a);
    } else {
      s.setxy(a, b);
    }
    return s;
  }
  public static void Main() {
    Sample returnedobj = Program.compare(10, 12);
    returnedobj.getxy();
  }
}

Produzione:

The smaller value = 10 The greater value = 12

Per prima cosa definiamo una classe Sample contenente i valori che vogliamo restituire dalla nostra funzione. Abbiamo quindi restituito più valori dalla funzione compare() con la classe Sample come tipo di ritorno della funzione in C#. I valori restituiti devono essere memorizzati anche in un’istanza della stessa classe. Sebbene entrambi i metodi siano ottimi per restituire più valori di diversi tipi di dati da una funzione, scrivere un’intera classe o struttura solo per restituire più valori da una funzione è molto noioso e richiede tempo.

Restituisce più valori da una funzione con la classe Tuple<T1, T2> in C#

Una tupla è una struttura dati con un numero specifico e uno specifico ordine di valori in C#. Una tupla può avere più valori di diversi tipi di dati. La classe Tuple<T1,T2> può essere utilizzata per definire tuple personalizzate con tipi di dati definiti dall’utente in una sequenza specifica. Il seguente esempio di codice ci mostra come possiamo restituire più valori da una funzione con la classe Tuple<T1,T2> in C#.

using System;

public class Program {
  public static Tuple<string, string, int> ReturnMultipleValues() {
    var result = Tuple.Create<string, string, int>("value1", "value2", 3);
    return result;
  }
  public static void Main() {
    var returnedvalues = ReturnMultipleValues();
    Console.WriteLine(returnedvalues);
  }
}

Produzione:

(value1, value2, 3)

Restituiamo più valori dalla funzione ReturnMultipleValues() specificando il tipo di ritorno della funzione con Tuple<string, string, int>. Ciò significa che la funzione ReturnMultipleValues() restituirà 3 valori con i primi due valori di tipo di dati stringa e l’ultimo valore di tipo di dati int. Questo valore di ritorno può essere salvato in una tupla di una struttura simile o in una variabile di tipo var.

Restituire più valori da una funzione con la notazione (T1,T2) in C#

La sezione precedente che discute come usare la classe Tuple<T1,T2> per semplificare il processo di restituzione di più valori da una funzione può essere ulteriormente abbreviata con la notazione (T1, T2) di dichiarazione delle tuple. La notazione (T1, T2) fa la stessa cosa della classe Tuple<T1,T2> abbreviando anche il codice. Il seguente esempio di codifica ci mostra come possiamo usare la notazione (T1, T2) per restituire più valori da una funzione in C#.

using System;

public class Program {
  public static (string, string, int) ReturnMultipleValues() {
    return ("value1", "value2", 3);
    ;
  }
  public static void Main() {
    (string val1, string val2, int val3) = ReturnMultipleValues();
    Console.WriteLine("{0} {1} {2}", val1, val2, val3);
  }
}

Produzione:

value1 value2 3

Nel codice precedente, abbiamo restituito più valori dalla funzione ReturnMultipleValues() con la notazione (T1,T2) in C#.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Articolo correlato - Csharp Function