何时在C#中使用静态类以及为什么它们并不总是糟糕的?
大家好!我是一名初学C#的开发者(学习了大约4个月)。我似乎已经掌握了OOP的基础知识:类、对象、继承、多态。但有一个主题让我感到困惑——静态类。
在教学示例中,我经常看到它们被用于helper或常量。例如,我编写了这样一个用于数学运算的类:
```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;
}
}
```
但后来我在论坛上读到,静态类违反了OOP原则(特别是Dependency Injection和可测试性),最好避免使用。有人说这是“对象包装中的过程式代码”。
现在我感到困惑。什么时候真的应该使用它们?什么时候最好使用带有实例方法的普通类?有没有一些情况,其中...