स्थैतिक कीवर्ड को किसी विधि से जोड़ने पर इसका क्या अर्थ है?
public static void doSomething(){
//Well, do something!
}
क्या आप static
कक्षा में कीवर्ड जोड़ सकते हैं ? तब इसका क्या मतलब होगा?
स्थैतिक कीवर्ड को किसी विधि से जोड़ने पर इसका क्या अर्थ है?
public static void doSomething(){
//Well, do something!
}
क्या आप static
कक्षा में कीवर्ड जोड़ सकते हैं ? तब इसका क्या मतलब होगा?
जवाबों:
एक static
फ़ंक्शन, एक नियमित ( उदाहरण के विपरीत) ) फ़ंक्शन के , वर्ग की एक आवृत्ति से जुड़ा नहीं है।
एक static
वर्ग एक ऐसा वर्ग है जिसमें केवल शामिल हो सकता हैstatic
सदस्य , और इसलिए उसे तत्काल नहीं किया जा सकता है।
उदाहरण के लिए:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
कॉल करने के लिए InstanceMethod
, आपको कक्षा का एक उदाहरण चाहिए:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
दूसरे दृष्टिकोण से: विचार करें कि आप एकल स्ट्रिंग पर कुछ परिवर्तन करना चाहते हैं। उदाहरण के लिए आप अक्षरों को बड़ा करना चाहते हैं इत्यादि। आप इन क्रियाओं के लिए एक और वर्ग बनाते हैं जिसका नाम "टूल्स" है। "उपकरण" वर्ग का उदाहरण बनाने का कोई अर्थ नहीं है क्योंकि उस वर्ग के अंदर किसी भी प्रकार की संस्था उपलब्ध नहीं है ("व्यक्ति" या "शिक्षक" वर्ग की तुलना करें)। इसलिए हम बिना किसी उदाहरण के "टूल" क्लास का उपयोग करने के लिए स्थैतिक कीवर्ड का उपयोग करते हैं, और जब आप क्लास के नाम ("टूल") के बाद डॉट दबाते हैं, तो आप अपने इच्छित तरीकों तक पहुँच बना सकते हैं।
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
Console.ReadKey();
}
}
public static class Tools
{
public static string ToUpperCase(string str)
{
return str.ToUpper();
}
}
}
एक स्थिर विधि, फ़ील्ड, प्रॉपर्टी या ईवेंट किसी वर्ग पर तब भी कॉल करने योग्य है, जब क्लास का कोई उदाहरण नहीं बनाया गया हो। यदि कक्षा के किसी भी उदाहरण को बनाया जाता है, तो उनका उपयोग स्थैतिक सदस्य तक पहुंचने के लिए नहीं किया जा सकता है। स्थिर क्षेत्रों और घटनाओं की केवल एक प्रति मौजूद है, और स्थैतिक विधियाँ और गुण केवल स्थैतिक क्षेत्रों और स्थैतिक घटनाओं तक पहुँच सकते हैं। स्टेटिक सदस्यों को अक्सर डेटा या गणना का प्रतिनिधित्व करने के लिए उपयोग किया जाता है जो ऑब्जेक्ट स्टेट की प्रतिक्रिया में नहीं बदलते हैं; उदाहरण के लिए, एक गणित पुस्तकालय में साइन और कोसाइन की गणना के लिए स्थिर तरीके हो सकते हैं। स्टैटिक क्लास के सदस्यों को स्टैटिक कीवर्ड का उपयोग मेम्बे के रिटर्न प्रकार से पहले घोषित किया जाता है
शीघ्र ही आप स्थैतिक वर्ग को तत्काल नहीं कर सकते हैं: Ex:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
आप इस तरह नहीं बना सकते हैं:
myStaticClass msc = new myStaticClass(); // it will cause an error
आप केवल बना सकते हैं:
myStaticClass.someFunction();
स्थिर कीवर्ड, जब किसी वर्ग पर लागू होता है, तो संकलक को उस वर्ग का एक भी उदाहरण बनाने के लिए कहता है। तब कक्षा का एक या अधिक उदाहरण 'नया' करना संभव नहीं है। एक स्थिर वर्ग में सभी विधियों को स्वयं को स्थिर घोषित किया जाना चाहिए।
यह संभव है, और अक्सर वांछनीय है, एक गैर-स्थिर वर्ग के स्थिर तरीके हैं। उदाहरण के लिए, किसी अन्य वर्ग का उदाहरण बनाते समय फ़ैक्टरी विधि को अक्सर स्थिर घोषित किया जाता है क्योंकि इसका अर्थ है कि फ़ैक्टर विधि वाले वर्ग के किसी विशेष उदाहरण की आवश्यकता नहीं है।
कैसे, कब और कहाँ MSDN देखें की एक अच्छी व्याख्या के लिए
static
वर्ग के पास कोई उदाहरण नहीं है।