实例化类和使用其方法并使方法静态并在不实例化类的情况下使用它们之间有什么区别

时间:2012-07-18 09:11:15

标签: c# static-methods

我知道这是一个非常基本的问题。第二部分也不适合OO世界。然而,当我搜索答案时,我得到了很多结果,其中一些是冲突的,所以想到清除所有的东西。另外,我想知道方法的内存分配方面的差异。提前谢谢。

4 个答案:

答案 0 :(得分:2)

我们在OO编程中使用类的原因是我们可以封装状态。静态方法(最多)仅维持单个状态。实例化对象可以维护该实例唯一的状态,并且单独的实例不会相互影响(除非明确实现)。

例如,想象一个简单的类,它维护一个方法被调用的次数,并通过属性公开该计数。仅使用静态成员,您只能拥有一个计数。使用实例成员,您可以创建多个对象,每个对象将保持自己的不同计数。

如果一个成员根本没有任何状态(也就是说,一个方法不使用未在该方法中声明或作为参数传递的变量),那么将其设置为静态是一个好主意。

答案 1 :(得分:0)

这取决于用途。如果你需要一些方法做不同的事情,如果你没有任何非静态成员,你应该使用静态类。

如果您的方法依赖于彼此的已处理数据,并且您需要创建变量和属性,则应该坚持使用非静态类,因为用户可以同时初始化多个实例。

答案 2 :(得分:0)

如果希望方法自行执行某些实用程序任务而不必维护任何上下文,则可以创建静态方法。

但是,要实例化的类会根据成员变量和成员对象维护一些上下文。这些函数使用这些上下文为您执行某些操作。

答案 3 :(得分:0)

假设您想在项目中的不同位置使用某些函数,让它说它计算的东西,所以它没有任何变量,所以你不需要它,因为它已经声明它是静态的

抱歉我的英语不好