2011-08-23 9 views
15

एक इनलाइन संग्रह प्रारंभकर्ता लिखने वाला सबसे छोटा/सबसे छोटा तरीका क्या है?सबसे कम इनलाइन संग्रह प्रारंभकर्ता? सी #

मुझे संदर्भ नामों की परवाह नहीं है, इंडेक्स ठीक हैं, और आइटम को केवल विधि के दायरे में उपयोग करने की आवश्यकता है।

मुझे लगता है कि एक अनाम प्रकार संग्रह गड़बड़ होगा क्योंकि मुझे हर बार मुख्य नाम लिखना होगा।

मैं वर्तमान में इम

var foo = new Tuple<int, string, bool>[] 
{ 
    new Tuple<int, string, bool>(1, "x", true), 
    new Tuple<int, string, bool>(2, "y", false) 
}; 

मिल गया है ग # 4.0 उम्मीद कर कुछ Ive याद किया होगा। वहाँ अगर आप नए बात करने के बजाय Tuple.Create(1,"x",true) प्रयोग

+1

आप सबसे कम या सबसे ज्यादा चाहते हैं? – Jodrell

+0

यदि इसका अधिक उपयोग किया जाता है, तो आप अपनी खुद की कक्षा लिख ​​सकते हैं जिसमें 'जोड़ें (int, string, bool)' विधि है और फिर संग्रह प्रारंभकर्ता का उपयोग करें, जैसे 'var foo = new MyCollection {{1, "x", true}, {2, "y", false}}; ' – nawfal

उत्तर

17

सबसे छोटा आप सी एक प्राप्त new Tuple के बजाय Tuple.Create उपयोग करने के लिए है:

var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) }; 
5

थोड़ा कम जगह है - और आप new Tuple<tint, string, bool> सामान सरणी से पहले भी पट्टी कर सकते हैं:

var foo = new [] { Tuple.Create(1, "x", true), Tuple.Create(2, "y", false) }; 

या इस एक ले:

Func<int, string, bool, Tuple<int, string, bool>> T = (i, s, b) => Tuple.Create(i,s,b); 
var foo = new [] { T(1, "x", true), T(2, "y", false) }; 

या यहां तक ​​कि

Func<int, string, Tuple<int, string, bool>> T = (i, s) => Tuple.Create(i,s,true); 
Func<int, string, Tuple<int, string, bool>> F = (i, s) => Tuple.Create(i,s,false); 
var foo = new [] { T(1, "x"), F(2, "y") }; 
+1

बीटीडब्ल्यू मार्कडाउन आप जो कर रहे थे उससे कोड * ब्लॉक * प्रारूपित करने का एक आसान तरीका प्रदान करता है - बस प्रत्येक (अनदेखी) पंक्ति चार रिक्त स्थान इंडेंट करें! उदाहरण के लिए मेरा संपादन देखें – AakashM

+0

ओह - धन्यवाद - "बटन" आज़माएं लेकिन यह प्रत्येक खाली रेखा पर रुक जाएगा .... मुझे लगता है कि यह मुझे भविष्य में तेज कर सकता है;) – Carsten

+1

@CKoenig: आप जिस प्रारूप को प्रारूपित करना चाहते हैं उसे चुनें और उसके बाद बटन दबाएं। यह काम। –

0

आप भी अपनी using घोषणाओं के अंत में एक

using MyTuple= System.Tuple<int, string, bool>; 

जोड़ सकते हैं और उसके बाद लंबे समय तक संस्करण के बजाय MyTuple का उपयोग करें।