English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C#7.0 (.NET Framework 4.7) introduced the ValueTuple structure, which is a value type representation of tuples.
ValueTuple is available only in .NET Framework 4.7available. If you do not see ValueTuple in your project, you need to install ValueTuple. (.NET Framework 4.7or higher version, or .NET Standard Library 2.0 oder höher enthält ValueTuple.)
Um das ValueTuple-Paket zu installieren, klicken Sie mit der rechten Maustaste auf das Projekt im Solution Explorer und wählen SieManage NuGet Packages... Dies öffnet den NuGet-Paketmanager. Klicken SieDurchsuchenRegisterkarte, geben Sie "ValueTuple" im Suchfeld ein und wählen SieSystem.ValueTuplePaket, wie folgt.
Das Erstellen und Initialisieren von ValueTuple ist einfach. Man kann es mit Klammern () und der Angabe der Werte erstellen und initialisieren.
var person = (1, "Bill", "Gates"); //Äquivalentes Tupel //var person = Tuple.Create(1,"Bill", "Gates");"Bill", "Gates");
ValueTuple kann auch durch Angabe der Typen der Elemente initialisiert werden, wie folgt.
ValueTuple<int, string, string> person = (1, "Bill", "Gates"); person.Item1; // Rückgabe1 person.Item2; // Rückgabe "Bill" person.Item3; // Rückgabe "Gates"
Hier ist eine Kurzform zur Angabe der Typen für jeden Mitgliedsnamen.
(int, string, string) person = (1, "Bill", "Gates"); person.Item1; // Rückgabe1 person.Item2; // Rückgabe "Bill" person.Item3; // Rückgabe "Gates"
Bitte beachten Sie, dass wir im obigen Tupel-Initialisierungsaufruf keine var verwendet haben, sondern in Klammern die Typen der einzelnen Mitgliedswerte bereitgestellt haben.
Ein Tupel muss mindestens zwei Werte enthalten. Folgendes ist kein Tupel:
var number = (1); // int-Typ, nicht Tupel var numbers = (1,2); // Gültige Tupel
Im Gegensatz zu Tuple kann ValueTuple mehr als acht Werte enthalten.
var numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
Wir können Namen für ValueTuple-Attribute zuweisen, anstatt die Standardattributnamen zu verwenden, z.B. Item1,Item2u. a.
(int Id, string FirstName, string LastName) person = (1, "Bill", "Gates"); person.Id; // Rückgabe1 person.FirstName; // Rückgabe "Bill" person.LastName; // Rückgabe "Gates"
Wir können auch Werte für Mitgliedsnamen auf der rechten Seite zuweisen, wie folgt.
var person = (Id:1, FirstName: "Bill", LastName: "Gates");
Bitte beachten Sie, dass wir den Mitgliedsnamen auf der linken oder rechten Seite bereitstellen können, aber nicht auf beiden Seiten. Die linke Seite hat Vorrang vor der rechten. Nachfolgende Inhalte werden den Namen auf der rechten Seite ignorieren.
// PersonId, FName, LName werden ignoriert.}} (int Id, string FirstName, string LastName) person = (PersonId:1, FName: "Bill", LName: "Gates"); //PersonId, FirstName, LastName werden ignoriert. Es hat Standardnamen: Item1,Item2,Item3。 (string, string, int) person = (PersonId:1, FName: "Bill", LName: "Gates");
Wir können auch Variablen als Memberwerte zuweisen.
string firstName = "Bill", lastName = "Gates"; var per = (FirstName: firstName, LastName: lastName);
Nachstehende Methode gibt ValueTuple zurück.
static void Main(string[] args) { DisplayTuple(1, "Bill", "Gates"); } static void DisplayTuple((int, string, string) person) { Console.WriteLine($"Id = { person.Item1"); Console.WriteLine($"Vorname = { person.Item2"); Console.WriteLine($"Nachname = { person.Item3"); }
Wir können auch verschiedene Membernamen für ValueTuple, das von einer Methode zurückgegeben wird, angeben.
static void Main(string[] args) { var person = GetPerson(); } static (int, string, string) GetPerson()} { return (Id:1, FirstName: "Bill", LastName: "Gates"); }
Man kann die verschiedenen Member eines ValueTuple durch Dekonstruktion abrufen. Die Deklarationssyntax teilt den ValueTuple in mehrere Teile und weist diese Teile den neuen Variablen zu.
static void Main(string[] args) { // Ändern Sie den Attributnamen (int PersonId, string FName, string LName) = GetPerson(); } static (int, string, string) GetPerson()} { return (Id:1, FirstName: "Bill", LastName: "Gates"); }
Wir können var auch verwenden, um explizite Datentypnamen zu ersetzen.
static void Main(string[] args) { // Verwenden Sie var als Datentyp (var PersonId, var FName, var LName) person = GetPerson(); } static (int, string, string) GetPerson()} { return (Id:1, FirstName: "Bill", LastName: "Gates"); }
ValueTuple ermöglicht auch das 'Verwerfen' von nicht beabsichtigten Mitgliedschaften bei der Strukturierung.
// Verwenden Sie das Unterstrichsymbol _ zum Verwerfen des nicht verwendeten Mitglieds LName (var id, var FName, _) = GetPerson();