किसी शब्दकोश के मानों की सूची को सरणी में बदलने का सबसे प्रभावी तरीका क्या है?शब्दकोश मानों को सरणी में बदलें
उदाहरण के लिए, अगर मैं एक Dictionary
जहां Key
String
और Value
Foo
है, मैं Foo[]
मैं 2005 का उपयोग कर रहा, सी # 2,0
किसी शब्दकोश के मानों की सूची को सरणी में बदलने का सबसे प्रभावी तरीका क्या है?शब्दकोश मानों को सरणी में बदलें
उदाहरण के लिए, अगर मैं एक Dictionary
जहां Key
String
और Value
Foo
है, मैं Foo[]
मैं 2005 का उपयोग कर रहा, सी # 2,0
// dict is Dictionary<string, Foo>
Foo[] foos = new Foo[dict.Count];
dict.Values.CopyTo(foos, 0);
// or in C# 3.0:
var foos = dict.Values.ToArray();
वहाँ एक toArray प्राप्त करने के लिए (चाहते हैं) मानों पर कार्य:
Foo[] arr = new Foo[dict.Count];
dict.Values.CopyTo(arr, 0);
लेकिन मुझे नहीं लगता कि इसकी effici ent (मैंने वास्तव में कोशिश नहीं की है, लेकिन मुझे लगता है कि यह इन सभी मानों को सरणी में प्रतिलिपि बनाता है)। क्या आपको वास्तव में एक ऐरे की आवश्यकता है? यदि नहीं, तो मैं IENumerable पास करने का प्रयास करूंगा:
IEnumerable<Foo> foos = dict.Values;
इसे एक सूची में स्टोर करें। यह आसान है;
List<Foo> arr = new List<Foo>(dict.Values);
बेशक यदि आप विशेष रूप से इसे किसी सरणी में चाहते हैं;
Foo[] arr = (new List<Foo>(dict.Values)).ToArray();
आप, LINQ उपयोग करें ताकि आप यह कर सकते करना चाहते हैं:
Dictionary<string, object> dict = new Dictionary<string, object>();
var arr = dict.Select(z => z.Value).ToArray();
मैं जो एक तेजी से या बेहतर है पता नहीं है। दोनों मेरे लिए काम करते हैं।
'dict.Values.ToArray()' एक ही चीज़ करता है, लेकिन एक प्रतिनिधि के माध्यम से प्रत्येक मान को भौतिक बनाने के उपर के बिना। – BACON
एक्सटेंशन क्या है। ToArray() कोई बेहतर प्रदर्शन करते हैं? –
Goran
लेकिन हम कैसे जानते हैं कि यह सबसे कुशल है? –
मैं नहीं देख सकता कि कैसे ToArray() सीधे प्रतिलिपि से तेज हो सकता है - जो कि कम से कम प्रतीत होता है। –