Es gibt definitiv Situationen, in denen Statik die richtige Lösung ist, wie bei jeder Anwendung. Jedes Mal, wenn Sie ein Objekt haben, das im Anwendungsbereich der Anwendung und nicht im Geltungsbereich der Anforderung enthalten sein sollte, sollte es statisch sein, und Sie sollten statische Methoden verwenden, um darauf zuzugreifen und sie zu bearbeiten.
Als Beispiel, hier ist ein Codeausschnitt, den ich kürzlich für eine ASP.NET-Anwendung geschrieben habe, die im Wesentlichen ein Serializer-Cache ist. Serialisierer sind teuer in der Erstellung, und wir können dieselbe für jeden Typ verwenden, solange unsere Anwendung läuft. Es muss also keine Zeit in jedem Anfragethread für sie verschwendet werden:
() Hinweis: dies wurde reduziert die statischen Aspekte)
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;
}
}
}
Siehe http://stackoverflow.com/questions/169378/c-method-can-be-made-static-but-should-it – cdonner
ganz wenigen simillar Fragen zu demonstrieren: http : // stackoverflow.com/search? q = static + Methoden –
@cdonner und @preet .. danke für die Links .. aber ich war auf der Suche nach einem umfassenden Beitrag von der Community über statische Methoden, da ich nicht viel klar über war t sie .. danke nochmal .. :) –