2010-02-18 23 views
13

रूबी में आप इसे संशोधित करने के लिए एक सरणी पर मानचित्र का उपयोग/विधि एकत्र कर सकते हैं:सी # सरणी मानचित्र/इकट्ठा

a = [ "a", "b", "c", "d" ] 
a.collect! {|x| x + "!" } 
a       #=> [ "a!", "b!", "c!", "d!" ] 

वहाँ सी # में यह करने के लिए एक आसान तरीका है?

उत्तर

25
a = a.Select(s => s + "!").ToArray(); 
+0

बिल्कुल सही! शीघ्र जवाब देने के लिए ध्न्यवाद! – RyanScottLewis

+3

ओपी के प्रश्न में पूछे गए अनुसार, यह एक नई सरणी बनाता है और मूल सरणी को संशोधित नहीं करता है। – spender

+1

@ स्पेंडर: बहुत सच है। शुरुआत में 'ए =' मूल सरणी के अन्य संदर्भ होने पर, इस विशेष संदर्भ बिंदु को नए सरणी में बनाने का ख्याल रखता है, उन्हें अपडेट नहीं किया जाएगा। – Tanzelax

0

हाँ कोशिश कर सकते हैं, LINQ का उपयोग कर (लेकिन यह मूल संग्रह में बदलाव नहीं करेगी) अधिक सहज ज्ञान युक्त।

var a = a.ConvertAll(x => x + "!").ToArray(); 
4

मैं ConvertAll उपयोग करने को प्राथमिकता के बाद से यह जल्दी है और मेरा मानना ​​है कि आप इस

var a = new[] { "a", "b", "c", "d" }; 

a = a.Select(p => p + "!").ToArray(); 
+0

यह तेज़ या अधिक अंतर्ज्ञानी बनाता है? –

+0

यह तेज़ है क्योंकि आपको अंतरिम में आलसी-भारित गणना करने की आवश्यकता नहीं है। आईएमओ यह अधिक पठनीय है क्योंकि यह कहता है कि यह वास्तव में क्या करता है। नक्शा वह है जो अधिकांश अन्य लैंग्स का उपयोग करता है। – mythz

+0

तो फिर 'मानचित्र' अधिक सहज नहीं होगा? –

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