Quando usar classes estáticas em C# e por que elas nem sempre são ruins?
Olá a todos! Sou um desenvolvedor C# iniciante (estudo há cerca de 4 meses). Acho que entendi os fundamentos de POO: classes, objetos, herança, polimorfismo. Mas há um tópico que me confunde — classes estáticas.
Em exemplos de estudo, vejo frequentemente que elas são usadas para helpers ou constantes. Por exemplo, escrevi esta classe para trabalhar com operações matemáticas:
```csharp
public static class MathHelper
{
public static double CircleArea(double radius)
{
return Math.PI * radius * radius;
}
public static double CelsiusToFahrenheit(double celsius)
{
return celsius * 9 / 5 + 32;
}
}
```
Mas depois li em fóruns que classes estáticas violam os princípios de POO (em particular, Dependency Injection e testabilidade), e que é melhor evitá-las. Dizem que é "código procedural em um invólucro de objeto".
Agora estou confuso. Quando realmente devo usá-las? E quando é melhor criar uma classe comum com métodos de instância? Existem situações onde se