Avatar ·

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