सबसे अधिक समय आप System.Array
के वारिस एक भी आयाम सरणी का उपयोग कर रहा है। जैसे:
int[] a1 = new int[2];
जब आप int[]
परिभाषित इस परोक्ष @Sergey Rybalkin तरह System.Array
प्रकार से ली गई है। इस मामले में विधि IndexOf
निश्चित रूप से एक उदाहरण विधि के रूप में लागू किया जाएगा, न कि स्थैतिक विधि के रूप में।
लेकिन एक और प्रकार है जो सिस्टम से प्राप्त होता है। बहु आयाम सरणी जैसे आरे। इस मामले में (बहु आयाम) विधि IndexOf
समझ में नहीं आता है।
टेस्ट इस:
int[,] arr = new int[2, 2];
arr[0, 0] = 3; arr[1, 0] = 4;
arr[0, 1] = 5; arr[1, 1] = 6;
Array.IndexOf(arr, 4);
पिछले की तरह है कि इस विधि स्थिर के रूप में कार्यान्वित किया जाता है की वजह से संदेश "Only single dimension arrays are supported here."
के साथ एक RankException फेंकता शायद, और सबसे शायद,।
...
टिप्पणी Is there a main principle behind the decision, whether to make a method static or not?
बारे में है, और सिद्धांत बहुत सरल है। उदाहरण विधि किसी ऑब्जेक्ट की क्रिया या व्यवहार का प्रतिनिधित्व करती है। स्थैतिक विधि उस प्रणाली का एक कार्य है जो वर्ग से संबंधित तर्क है, या कुछ मामलों में आप जिस विधि को कक्षा के उदाहरण के बिना कॉल करना चाहते हैं।
System.Math
कक्षा में सोचें कि अगर आपको Sqrt
या Pow
जैसी विधि को कॉल करने के लिए उदाहरण गणित की आवश्यकता है तो गड़बड़ी कैसे होगी?
अंतिम उदाहरण मैं आपको दूंगा System.Text.RegularExpressions.Regex
कक्षा है। इस वर्ग में Match
विधि उदाहरण के रूप में लागू की गई है और एक अधिभार स्थिर के रूप में लागू किया गया है।
हर कमरे में एक ऐसे भिन्न संदर्भ में प्रयोग किया जाता है। उदाहरण का उपयोग तब किया जाता है जब आप एक ही पैटर्न का कई बार उपयोग करते हैं। स्थैतिक जब आप पैटर्न को अपने कोड में एक अद्वितीय समय का उपयोग करते हैं।
(मैंने एएसपी.नेट टैग हटा दिया, क्योंकि 'ऐरे' आदि का डिज़ाइन एएसपी.नेट से संबंधित नहीं है) –
मैं निर्धारित करता हूं कि उनमें से अधिकतर स्थिर हैं क्योंकि वे केवल सरणी और विस्तार विधियों के लिए नहीं हैं उस समय का आविष्कार किया। – Romoku
@Romoku वे अभी भी, उदाहरण के तरीकों हो सकता है, हालांकि –