यह एक जोरदार टाइप किया monodimensional सरणी "सीधे" बनाता है।
यह एक और एक सरणी बनाने के लिए प्रतिबिंब का उपयोग करने के लिए इसी तरह की (प्रकार रनटाइम पर फैसला किया जा सकता है)
int[] array2 = (int[])Array.CreateInstance(typeof(int), 10);
सरणी अंत में बनाए गए एक ही है, लेकिन यह बनाने की गति बहुत धीमी है है Array.CreateInstance
का उपयोग करते समय।ध्यान दें कि Array.CreateInstance
के साथ गतिशील सरणी के प्रकार (एक ही तरीका है कि प्रतिबिंब के माध्यम से आप एक प्रकार कार्यावधि में प्रकार दिया का एक उदाहरण बना सकते हैं) का चयन कर सकते हैं, उदाहरण के लिए:
Type type = someCondition ? typeof(int) : typeof(string);
Array array2 = Array.CreateInstance(type, 10);
एक और बड़ा अंतर: "आधार" Array
वर्ग कमजोर टाइप किया गया है (इसलिए इसकी विधियां object
पैरामीटर का उपयोग करती हैं, int
/string
'/ something
) के बजाय। तो:
int num = (int)array2.GetValue(1); // You have to cast the return value to int from object
एक अन्य कारण
array[5] = 1;
बजाय
array2.SetValue(5, 1);
की जाती है कि पहली विधि एक monodimensional करने के लिए एक सीधी पहुँच के रूप में आईएल कोड में अनुकूलित है उपयोग करने के लिए सरणी (stelem
और ldelem
)। GetValue
के लिए भी यही सच है।
कारण मैं शब्द "monodimensional सरणी" उपयोग कर रहा हूँ:
नेट में दो सरणियों के "प्रकार" देखते हैं: monodimensional सरणियों और "जटिल" सरणियों (वे बहुआयामी हो सकता है , या पहले तत्व के साथ 0 सूचकांक, या दोनों पर नहीं)। दूसरा समूह बहुत धीमा है। stelem
और ldelem
केवल monodimensional arrays के साथ काम करते हैं। बहुआयामी/विशेष सरणी के लिए "छिपा" विधियों का उपयोग उन तक पहुंचने के लिए किया जाता है (सी # कंपाइलर प्राप्त करता है और सेट करता है ताकि इन विधियों को बुलाया जा सके) (वे GetValue
/SetValue
Array
कक्षा के समान हैं, उदाहरण के लिए https://stackoverflow.com/a/597729/613130)
वे पूरी तरह से अलग चीजें करते हैं। – asawyer
जब आप संकलन समय पर प्रकार जानते हैं, तो मैं दूसरे फॉर्म का उपयोग करने के लिए * कोई * लाभ नहीं देख सकता। –
अधिकांश कक्षाओं के विपरीत, Array सार्वजनिक निर्माणकर्ताओं की बजाय CreateInstance विधि प्रदान करता है, ** देर से बाध्य पहुंच ** की अनुमति देने के लिए। - [Array.CreateInstance विधि] (http://msdn.microsoft.com/en-us/library/zb3cfh7k.aspx) – Habib