2011-11-20 13 views
7

Pobieranie elementów z Tuple odbywa się przez uzyskanie dostępu do właściwości ItemX. Czy istnieje sposób nazywania każdego przedmiotu, aby używanie Tuple było łatwiejsze do odczytania?Czy istnieje sposób na nadanie konkretnych nazw pozycjom Tuple?

Kod:

Patrząc na coś takiego:

Dim l As New Tuple(Of String, Integer) 
l.Name 
l.ID 

Zamiast:

Dim l As New Tuple(Of String, Integer) 
l.Item1 
l.Item2 

Odpowiedz

7

Nie, nie ma nic w rodzaju krotki który pomaga tutaj. Opcje:

  • Jeśli potrzebujesz przekazać wartości na wiele sposobów, utwórz własny typ z odpowiednimi właściwościami. (Ty mógłby pochodzą z Tuple tutaj, jeśli naprawdę chcesz, i po prostu zapewnić właściwości, które przenoszą na Item1 i Item2, ale nie jestem pewien, że będzie)
  • Jeśli trzeba tylko wartości w obrębie jednej metody, należy użyć anonymous type
1

Możesz napisać kilka metod rozszerzenia dla Tuple: Pierwszy, który zwraca pierwszy element, i Rest, który zwraca subtupkę z drugiego elementu. To może być zarówno ogólny, prosty, jak i niezawodny rozwiązanie.

Jeśli zadzwonisz pod numer Pierwszy samochód i Odpoczynek cdr, sprawisz, że wiele osób będzie bardzo zadowolonych z tego powodu: http://en.wikipedia.org/wiki/CAR_and_CDR.

3

W wersji C# 7 mamy funkcję nadawania przyjaznej nazwy Tuple Values. Uwaga: Bezpośrednio wpisany kod nie został skompilowany.

np

(int Latitude, int Longitude, string city) GetPlace() 
{ 
    return(20,30,"New York");  
} 

var geoLocation = GetPlace(); 
WriteLine($"Latitude :{geoLocation.Latitude}, Longitude:{geoLocation.Longitude}, City:{geoLocation.city}"); 
+3

Uwaga dla potencjalnych przyszłych czytelników: Ta odpowiedź została wysłana przed C# 7 został zwolniony. Tak więc dokładna składnia wciąż może ulec zmianie. (Osobiście czekałbym przed opublikowaniem tego) – sstan

Powiązane problemy