.Net: Что это значит? Наличие нестатического класса со статическим методом? - PullRequest
1 голос
/ 21 февраля 2010

Что это значит? Имеете нестатический класс, который имеет, например, один статический метод?

Без создания экземпляра этого класса мы не сможем его использовать. Но как насчет его статического метода?

Ответы [ 3 ]

2 голосов
/ 21 февраля 2010

Статический метод может использоваться без необходимости создания экземпляра класса. Один из распространенных случаев, когда это используется, - это когда конструктор класса является закрытым и для возврата экземпляров предоставляется статический метод, например фабрика. Например, метод Create :

XmlReader reader = XmlReader.Create("test.xml");
2 голосов
/ 21 февраля 2010

Да, вы можете вызывать статический метод, не создавая экземпляр класса.

Статический метод - это просто метод, связанный с самим типом, а не с экземпляром типа. (Это относится и к структурам.) То же самое относится и к статическим полям - опять же, они связаны с типом, а не с одним конкретным экземпляром типа. Название «static» несколько неудачно с точки зрения того, что оно не очень хорошо описывает концепцию - ключевое слово VB «Shared» лучше в некоторых способах, хотя подразумевает, что оно совместно используется между all экземпляры, а не связанные с любым экземпляром. (Статические члены доступны независимо от того, были ли созданы экземпляры когда-либо или нет.)

Действительно, статические методы часто используются в качестве альтернативы конструкторам - например, Encoding.GetEncoding. Это позволяет им возвращать кэшированные экземпляры, возвращать ноль, если это особенно полезно, или выполнять дополнительную работу до / после кода конструктора.

1 голос
/ 21 февраля 2010

Если у вас есть нестатический класс со статическим методом, это означает, что вы можете использовать статический метод, даже если у вас нет экземпляра класса.

...