gibi bir şey var mı? List<String, Int32, Int32>
benzeri bir şeye ihtiyacım var. Liste, bir seferde yalnızca bir türü ve bir seferde yalnızca iki dili destekler. Yukarıdaki gibi bir şey yapmak için temiz bir yol var mı (çok boyutlu bir genel liste/koleksiyon)?Liste <String, Int32, Int32> (çok boyutlu genel liste)
cevap
iyi yolu, bu 3.0 C# til yapamaz, bir sınıf
public class Container
{
public int int1 { get; set; }
public int int2 { get; set; }
public string string1 { get; set; }
}
o zaman
List<Container> myContainer = new List<Container>();
+1, .Net4 tuple gerektirmediğinden ve bir sınıfla basitçe uygulanabilir, ancak bir sınıftaki genel alanlardan kaçınmanız gerektiğinden -1. Bir mülk olarak kullanın ve basit kullanın {get; yerine;} 'yerine. –
Muhtemelen Equals ve GetHashCode'u da geçersiz kılmanız gerekecektir. –
tipi Kapsayıcı, yalnızca değerleri temsil ettiğinden, değişmez bir yapı olmalıdır. –
.NET 4'te List<Tuple<String, Int32, Int32>>
'u kullanabilirsiniz.
Maalesef .NET 3.5 üzerinde çalışıyorum, ancak bunu 4.0 için aklımda tutuyorum! – Alex
Kuyusu ihtiyaç kodunda yani bunun için bir kap yaratmaktır Diğer cevaplarda belirtildiği gibi C# 4.0 kullanabilirsiniz eğer Tuples kullanın.
Ancak C# 3.0'da - Immutable structure
oluşturun ve her türün yapıdaki delillerini sarın ve yapı türünü listenize genel tür bağımsız değişken olarak iletin.
public struct Container
{
public string String1 { get; private set; }
public int Int1 { get; private set; }
public int Int2 { get; private set; }
public Container(string string1, int int1, int int2)
: this()
{
this.String1 = string1;
this.Int1 = int1;
this.Int2 = int2;
}
}
//Client code
IList<Container> myList = new List<Container>();
myList.Add(new Container("hello world", 10, 12));
Merak ediyorsanız neden değişmez yapılar oluşturmak - checkout here.
Yorumunuza dayanarak, bir dize anahtarıyla bir sözlükte depolanmış iki tamsayıya sahip bir yapıya ihtiyacınız olduğu anlaşılıyor.
struct MyStruct
{
int MyFirstInt;
int MySecondInt;
}
...
Dictionary<string, MyStruct> dictionary = ...
Bu, dizelerin benzersiz olması gerektiğini varsayar. –
- 1. dönüştürme Liste <String>
- 2. Çok boyutlu liste oluşturma ve ekleme öğesi []
- 3. Hazırda Beklet, Liste <String>
- 4. Liste <String> addAll() yöntemi eklenmiyor
- 5. Liste <string> INotifyPropertyChanged event
- 6. Liste nedir? [String ~ Int]?
- 7. Genel liste oluştur <T> yansımasıyla
- 8. İki boyutlu liste nesnelerini karşılaştırarak
- 9. Java sözlüğü <String, Liste <Object>>
- 10. Nasıl kullanılır Genel liste listesinde
- 11. Sorgu birden çok liste
- 12. Liste
- 13. Liste <?> vs Liste <? Nesne>
- 14. Liste <T>
- 15. İki Liste <string>'dan farklı değerler nasıl alınır?
- 16. Bir Liste veya Küme için JPA eşlemesi <String>
- 17. C# Liste <string> sınırlayıcı ile dize
- 18. C# - Bir liste gerçekten kolay serileştirebilirsiniz <String>
- 19. Android çift genişletilebilir liste görünümü liste çok büyükse öğeleri gizler
- 20. WPF MVVM Bind Sözlük <String, Liste <String>> datagrid'e göre
- 21. Int32.ToString() Çok yavaş
- 22. DataTable Liste <object>
- 23. WIP'de Çok Kanallı Liste Kutusu
- 24. C# genel örnek Yansıtılan türden bir liste
- 25. Genel Liste Özelliğinde Gerekli Özellik Özellik
- 26. GridView için Genel Liste Dizini Bağlama
- 27. "Liste"
- 28. Liste
- 29. Liste
- 30. C# Liste Genel Uzantı Yöntemi vs Genel Olmayan
Int32'nin çoğaltılması ilginçtir. Ne yapmaya çalışıyorsun? –
İki farklı sayıyı tek bir dizeyle semantik olarak ilişkilendirmem gerekiyor, bu da verileri bir görünümde işlemek için kullanılacaktır. – Alex
Sanırım @Alex benim gibi java'nın geçmişine sahip. –