2013-02-05 18 views
6

Ben şey çiftleri/üçe oluşturmak ve bir yere saklamak gerekir. Nasıl yapabilirim?Anonim türlerin listesi?

for (int i = 0; i < 100; i++) 
{ 
    var item=new { a=i , b="lala" ,c=4.5m}; //anonymous type 
} 

Ama sonra düşündüm:

Denedim List<what>?

Dinamik kullanabilirsiniz ama IntelliSense istiyorum.

(Ben de var Tuple<int,string,decimal> kullanmak ama zaten, neden diğer türü (lü) kullanmalıyım?) I (=new { a=i , b="lala" ,c=4.5m}; ne gerek varsa olabilir)

Buna bir çözüm var mı?

+0

"Bir şey" bir arabirimden mi yoksa bir sınıftan mı geliyor? – daryal

+0

no. Bunu anında yaratıyorum. (örneklemde olduğu gibi) –

+0

Anonim türden bir liste oluşturmak mı istiyorsunuz? –

cevap

14

Sen for dahilinde alan doldurmak nasıl

var items = Enumerable.Range(0,100) 
         .Select(i => new { a=i , b="lala", c=4.5m }) 
         .ToList(); // not necessary (you can use IEnumerable) 
+0

ToList zaten yakalanan var issue.right önler? –

+0

@RoyiNamir üzgünüm, yakalanan var sayı * ile ne demek istediğini anlamadım. Öğeleri birkaç kez kullanmak isterseniz, 'ToList()' veya 'ToArray()' işlevini kullanmak daha iyidir. Öğeleri bir kez yineleyecekseniz, sadece IENumerable 'un anonim türünü kullanın (daha fazla numaralandırma yeni öğeler oluşturacaktır). Bu yüzden 'ToList()' ile ilgili bu yorumu ekledim. –

3

emin değil tip çıkarım kullanabilirsiniz, ancak deneyebilirsiniz:

var lstOfSmth = Enumerable.Range(0, 100) 
          .Select(i => new { a = i, b = "lala", c = 4.5m }) 
          .ToList(); 
2

neden diğer tip (tuple) kullanması gerekir

onlar bu amaçla tam olarak tasarlanmıştır Çünkü

. Ayrıntılı koddan korkuyorsanız, using yönergesi de kurtarmaya gelir.

using myPair = Tuple<int,string>; 
using myTriple = Tuple<int,string,decimal>; 
//... 
for (int i = 0; i < 100; i++) 
{ 
    myPair pair = new myPair(1,"string"); 
    myTriple triple = new myTriple(i,"lala", 4.5); 
} 
+2

Alex - 4.5m bir ölçü birimi değil (sayaç değil). Sayısal olarak konuşulan bir dünya olan kayan nokta sayısı yerine 4.5'in ondalık olmasını zorluyor. – Eilon

+0

http://www.dotnetperls.com/suffix –

+0

Oh utanıyorum. Bir şeyleri tamir edeceğim – Alex