निश्चित रूप से ऐसी स्थितियां हैं जहां स्थैतिक उचित समाधान है, जैसा कि किसी भी आवेदन के साथ है। किसी भी समय आपके पास कुछ ऑब्जेक्ट है जो एप्लिकेशन स्कोप पर रहना चाहिए, न कि अनुरोध के दायरे पर, यह स्थैतिक होना चाहिए और आपको इसे एक्सेस करने और कुशलतापूर्वक उपयोग करने के लिए स्थिर विधियों का उपयोग करना चाहिए।
उदाहरण के तौर पर, यहां एक कोड का एक स्निपेट है जिसे मैंने हाल ही में एएसपी.NET एप्लिकेशन के लिए लिखा था, जो अनिवार्य रूप से एक धारावाहिक कैश है। Serializers बनाने के लिए महंगे हैं और हम जब तक हमारे आवेदन जीवन के रूप में के लिए प्रकार के अनुसार एक ही एक का पुन: उपयोग कर सकते हैं, इसलिए उनके लिए प्रत्येक अनुरोध सूत्र में समय बर्बाद करने के लिए कोई ज़रूरत नहीं है:
(नोट: इस नीचे छीन कर दिया गया है स्थिर पहलुओं को प्रदर्शित करने के)
public class XmlSerializerUtility
{
private static Dictionary<Type, XmlSerializer> serializers = new Dictionary<Type, XmlSerializer>();
private static object sync = new object();
public static T Deserialize<T>(string input)
{
XmlSerializer xs = GetSerializer(typeof(T));
using (StringReader sr = new StringReader(input))
{
return (T)xs.Deserialize(sr);
}
}
public static XmlDocument Serialize(object input)
{
XmlDocument doc = new XmlDocument();
XmlSerializer xs = GetSerializer(input.GetType());
using (MemoryStream stream = new MemoryStream())
{
xs.Serialize(stream, input);
stream.Position = 0;
doc.Load(stream);
}
return doc;
}
private static XmlSerializer GetSerializer(Type type)
{
lock (sync)
{
XmlSerializer xs = null;
if (!serializers.ContainsKey(type))
{
xs = new XmlSerializer(type);
serializers.Add(type, xs);
}
else
{
xs = serializers[type];
}
return xs;
}
}
}
स्रोत
2009-11-02 20:35:11
देखें http://stackoverflow.com/questions/169378/c-method-can-be-made-static-but-should-it – cdonner
कुछ simillar सवाल काफी: http : //stackoverflow.com/search? q = static + विधियां –
@cdonner और @preet .. लिंक के लिए धन्यवाद .. लेकिन मैं समुदाय से स्थिर तरीकों पर एक व्यापक इनपुट की तलाश में था, क्योंकि मैं बहुत स्पष्ट नहीं था टी उन्हें .. धन्यवाद फिर से .. :) –