2013-02-05 20 views
6

मुझे कुछ के जोड़े/ट्रिपल बनाने और इसे कहीं भी स्टोर करने की आवश्यकता है। मैं यह कैसे कर सकता हूं?गुमनाम प्रकारों की सूची?

मैंने कोशिश की:

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

लेकिन फिर मैंने सोचा: List<what>?

मैं गतिशीलता का उपयोग कर सकता हूं लेकिन मुझे इंटेलिजेंस चाहिए।

(मैं भी हो सकता था Tuple<int,string,decimal> का उपयोग लेकिन अगर मैं पहले से ही है कि मैं क्या जरूरत है (=new { a=i , b="lala" ,c=4.5m}; है), कारण है कि मैं अन्य प्रकार (टपल) इस्तेमाल करना चाहिए?)

वहाँ इस के लिए किसी भी समाधान है?

+0

क्या "कुछ" इंटरफ़ेस या कक्षा से प्राप्त होता है? – daryal

+0

संख्या। मैं इसे फ्लाई पर बना देता हूं। (मेरे नमूने की तरह) –

+0

क्या आपका मतलब है कि आप अनाम प्रकार की एक सूची बनाना चाहते हैं? –

उत्तर

14

आप

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 पहले से ही कब्जा कर लिया गया मुद्दा जारी करता है। सही? –

+0

@RoyiNamir क्षमा करें, * कब्जा कर लिया गया मुद्दा * द्वारा कब्जा नहीं किया गया *। यदि आप कई बार वस्तुओं का उपयोग करना चाहते हैं, तो 'ToList() 'या' ToArray() 'का उपयोग करना बेहतर है। यदि आप वस्तुओं पर एक बार फिर से शुरू करने जा रहे हैं, तो बस अनाम प्रकार के 'IENumerable ' का उपयोग करें (आगे की गणना नई वस्तुओं को बनाएगी)। यही कारण है कि मैंने 'toList()' पर उस टिप्पणी को जोड़ा है। –

3

सुनिश्चित नहीं हैं, आप कैसे for भीतर क्षेत्रों को भरने के प्रकार निष्कर्ष उपयोग कर सकते हैं, लेकिन आप की कोशिश कर सकते:

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

कारण है कि मैं अन्य प्रकार (टपल) का उपयोग करना चाहिए

क्योंकि उन्हें इस उद्देश्य के लिए बिल्कुल डिजाइन किया गया है। यदि आप वर्बोज़ कोड से डरते हैं, तो using निर्देश भी बचाव के लिए आता है।

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

एलेक्स - 4.5 मीटर माप की इकाई नहीं है (यह मीटर नहीं है)। यह एक फ्लोटिंग पॉइंट नंबर के बजाय 4.5 को दशमलव होने के लिए मजबूर कर रहा है, जो संख्यात्मक रूप से बोलने वाली अंतर की दुनिया है। – Eilon

+0

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

+0

ओह शर्म की बात मैंने इसे याद किया। मैं चीजों को ठीक कर दूंगा – Alex

संबंधित मुद्दे