2009-07-25 19 views
9

मैं IENumerable जैसे बाहरी वर्गों के तरीकों को जोड़ने के लिए उपयोग किया जाता हूं। लेकिन क्या हम सी # में Arrays का विस्तार कर सकते हैं?क्या सी # में सरणी विस्तार करना संभव है?

मैं उन सरणी के लिए एक विधि जोड़ने की योजना बना रहा हूं जो इसे एक बहुगुणित में परिवर्तित करता है भले ही यह बहुआयामी हो।

How to extend arrays in C#

+3

क्या यहां कोई प्रश्न पोस्ट करने की कोशिश करने के लिए यह छोटा नहीं है? –

+3

मैंने कोशिश की, लेकिन मैंने प्रक्रिया में फिर से कुछ गलत किया। अब मुझे वह व्यवहार मिल रहा है जिसकी मुझे उम्मीद है –

उत्तर

23
static class Extension 
{ 
    public static string Extend(this Array array) 
    { 
     return "Yes, you can"; 
    } 
} 

class Program 
{ 

    static void Main(string[] args) 
    { 
     int[,,,] multiDimArray = new int[10,10,10,10]; 
     Console.WriteLine(multiDimArray.Extend()); 
    } 
} 
+0

विधि में "यह ऐरे सरणी" का क्या अर्थ है। मुझे लगता है कि ऐरे एक अमूर्त वर्ग है तो आप "इस ऐरे सरणी" लिखकर वास्तव में क्या कर रहे हैं? – VatsalSura

+2

यह ऐरे सरणी का अर्थ है कि * यह ऐरे * उस प्रकार का जिक्र कर रहा है जिसे विस्तारित किया जाना है। * यह ऐरे * * यह टी * हो सकता है, जहां विधि होगी * सार्वजनिक स्थैतिक शून्य (यह टी obj) * बढ़ाएं। पहचानकर्ता केवल प्रकार को एक नाम देता है, इसलिए इसे विस्तारित विधि में संदर्भित किया जा सकता है। – SimonC

2

से संबंधित नहीं मैंने किया!

public static class ArrayExtensions 
{ 
    public static IEnumerable<T> ToEnumerable<T>(this Array target) 
    { 
     foreach (var item in target) 
      yield return (T)item; 
    } 
} 
+0

विधि में "इस ऐरे लक्ष्य" का क्या अर्थ है। मुझे लगता है कि ऐरे एक अमूर्त वर्ग है तो आप "इस ऐरे लक्ष्य" लिखकर वास्तव में क्या कर रहे हैं? – VatsalSura

23

हां। या तो Array वर्ग पहले से ही दिखाया गया है विस्तार के माध्यम से, या सरणी का एक विशिष्ट प्रकार या यहां तक ​​कि एक सामान्य सरणी का विस्तार करके:

public static void Extension(this string[] array) 
{ 
    // Do stuff 
} 

// or: 

public static void Extension<T>(this T[] array) 
{ 
    // Do stuff 
} 

पिछले एक बिल्कुल Array विस्तार के बराबर नहीं है, यह एक के लिए काम नहीं करेंगे के रूप में बहु-आयामी सरणी, इसलिए यह थोड़ा और बाध्य है, जो उपयोगी हो सकता है, मुझे लगता है।

+1

+1 आपका कार्यान्वयन @ maciejkow की तुलना में अधिक प्रकार-सुरक्षित है। मैंने कुछ समय पहले इसी तरह की विधि का उपयोग करके कुछ सरणी विस्तार विधियों को लिखा था। –

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