Что делает плохой практикой использование статического ключевого слова при определении метода в C #?Я знаю, что с static мы можем напрямую обращаться к функции в классе, не создавая экземпляр класса.Но когда мы не должны использовать статические?
static
Метод, который не обращается к каким-либо данным экземпляра, должен быть помечен как static: https://docs.microsoft.com/en-us/visualstudio/code-quality/ca1822-mark-members-as-static?view=vs-2017 В зависимости от использования он все равно может быть объявлен как метод private.
private
Если метод получает доступ к каким-либо данным экземпляра, он не может быть статическим. Компилятор обеспечивает это.
Типичными примерами статических методов являются, например, String.Format и Int32.Parse. Нет смысла выделять string или int перед вызовом этих методов.
String.Format
Int32.Parse
string
int
Вы создаете статический метод, когда вам не нужен метод для доступа к любому из нестатических элементов вашего класса.Например, учтите метод DateTime.Parse.Вы можете создать экземпляр DateTime как обычно, но если вам нужно проанализировать конкретную дату, вы можете вызвать DateTime.Parse, чтобы вернуть действительный DateTime, не создавая экземпляр DateTime как таковой.Поскольку этот метод не имеет доступа к какому-либо конкретному элементу класса DateTime, он объявляется как static
DateTime.Parse
DateTime
Дополнительная информация:
https://www.codeproject.com/Questions/1208992/When-to-use-static-methods-Csharp
https://hackernoon.com/c-static-vs-instance-classes-and-methods-50fe8987b231
Существует полное объяснение использования «статического» свойства здесь Microsoft.
В опыте веб-фреймворка (например, для .NET Core) мы используем статическое объявление для примитивных значений, которые НЕ потребуют никаких изменений.