C# 什么时候不在C中使用static关键字?

C# 什么时候不在C中使用static关键字?,c#,class,static,C#,Class,Static,在C中定义方法时,使用静态关键字是一种糟糕的做法,这是什么原因? 我知道,使用static,我们可以直接访问类中的函数,而无需创建类的实例。但是什么时候我们不应该使用static?对于微软使用“static”属性有一个完整的解释 例如,在web框架的experience.NET Core中,我们对不需要任何更改的基本值使用静态声明。不访问任何实例数据的方法实际上应该标记为静态:根据使用情况,它可能仍然声明为私有方法 如果该方法确实访问任何实例数据,则它不能是静态的。编译器强制执行此操作 静态方法

在C中定义方法时,使用静态关键字是一种糟糕的做法,这是什么原因?
我知道,使用static,我们可以直接访问类中的函数,而无需创建类的实例。但是什么时候我们不应该使用static?

对于微软使用“static”属性有一个完整的解释


例如,在web框架的experience.NET Core中,我们对不需要任何更改的基本值使用静态声明。

不访问任何实例数据的方法实际上应该标记为静态:根据使用情况,它可能仍然声明为私有方法

如果该方法确实访问任何实例数据,则它不能是静态的。编译器强制执行此操作


静态方法的常见示例有String.Format和Int32.Parse。在调用这些方法之前分配一个字符串或int是没有意义的。

当您不需要该方法来访问类上的任何非静态元素时,就创建了一个静态方法。例如,考虑DateTime.Parse方法。您可以像往常一样创建DateTime实例,但如果需要解析特定日期,可以调用DateTime.parse返回有效的DateTime,而不必创建DateTime实例本身。由于该方法不访问DateTime类的任何特定元素,因此将其声明为静态

更多信息:


如果该方法不需要访问任何实例成员,则应将其定义为静态。它可能仍然被声明为私有方法。但是什么时候我们不应该使用静态方法呢?例如,当您希望能够模拟它进行单元测试时。