2008-08-27 14 views
6

मैंदर्रा संदर्भ

string[] parts = string.spilt(" "); 

साथ तार की एक सरणी का निर्माण और यह में एक्स भागों के साथ एक सरणी मिलता है, मैं तत्व से शुरू तार के सरणी की एक प्रतिलिपि प्राप्त करना चाहते हैं

parts[x-2] 

स्पष्ट जानवर बल दृष्टिकोण (एक नई सरणी बनाने के लिए और तार डालने) के अलावा, सी # में यह करने के लिए एक और अधिक सुरुचिपूर्ण तरीका है?

उत्तर

2

कैसे सरणी के बारे में .Copy?

http://msdn.microsoft.com/en-us/library/aa310864(VS.71).aspx

Array.Copy विधि (सरणी, Int32, सरणी, Int32, Int32)

प्रतियां निर्दिष्ट स्रोत सूचकांक पर शुरू किसी सरणी से तत्व की एक सीमा है और उन्हें एक और सरणी को चिपकाता है निर्दिष्ट गंतव्य सूचकांक से शुरू। लंबाई और अनुक्रमणिका 32-बिट पूर्णांक के रूप में निर्दिष्ट हैं।

-1

Array.Copy का उपयोग करें। यह एक अधिभार तुम क्या आवश्यकता है कि है:

Array.Copy (सरणी, Int32, सरणी, Int32, Int32)
प्रतियां निर्दिष्ट स्रोत सूचकांक पर शुरू किसी सरणी से तत्व की एक सीमा और निर्दिष्ट गंतव्य अनुक्रमणिका से शुरू होने पर उन्हें अन्य ऐरे पर चिपकाता है।

-1

Array.Copy Method

मैं की तरह कुछ लगता है: (। बिना 1 बग द्वारा बंद है कि मुझे यकीन है कि वहाँ में है कर रहा हूँ)

string[] less = new string[parts.Length - (x - 2)]; 
Array.Copy(parts, x - 2, less, 0, less.Length); 

0
List<string> parts = new List<string>(s.Split(" ")); 
parts.RemoveRange(0, x - 2); 

यह मानते हुए कि List<string>(string[]) एक प्रति कार्रवाई करते समय के बजाय एक समर्थन दुकान के रूप में मौजूदा सरणी का उपयोग करने के लिए इस एक सरणी की नकल कर रही है की तुलना में तेजी से हो सकता है अनुकूलित है।

6

मुझे इस प्रश्न का उत्तर याद आया और सिर्फ एक नई वस्तु के बारे में सीखा जो आप चाहते हैं कि करने के लिए एक उच्च प्रदर्शन विधि प्रदान कर सकते हैं।

ArraySegment<T> पर एक नज़र डालें। यह आपको कुछ ऐसा करने देगा।

string[] parts = myString.spilt(" "); 
int idx = parts.Length - 2; 
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx);