为什么我们在C#上使用静态成员?

时间:2017-02-03 19:07:12

标签: c# oop

有人可以通过实例解释实例和静态成员之间的主要区别吗?

2 个答案:

答案 0 :(得分:0)

静态成员在不使用隐含的“this”参数的情况下运行,该参数是调用Instance Method的对象的实例引用。

var number = Int32.TryParse("1234"); // Static member of Int32.  
//Is not called using an object, it doesnt not need the 'this' 
//because it doesn't change the data of the class.

string stringy = "asdfasdf";

char [] characters = stringy.ToCharArray();
//requires the strings data so it needs the instance stringy.

如果需要类数据,那么您需要一个实例。如果不是,您可以将该方法设置为静态,以便可以在没有对象的情况下随时调用它。

编辑:我最初将其视为静态方法。静态数据成员完全不同。当您的程序运行时,只分配了该类型的一个数据对象,并且可以通过类名访问,而不是类的实例。

public class Classy
{
    public static int number= 4;

    public static void func() { }

    // Other non-static fields and properties...
}

//mainline..
//
int n = Classy.number;
Classy.func(); // etc..

答案 1 :(得分:-1)

您不会为静态类创建实例。您只需使用其类型名称调用它们即可。

例如。

public static StaticClass {
   public static void StaticMethod(){}
}

要调用静态方法,只需输入StaticClass.StaticMethod()

即可

创建类的对象时,它被称为创建该类的实例。您只能创建具体类的实例

例如

public class ConcreteClass {

public void RandomMethod(){}

}

要致电RandomMethod,您必须通过创建对象来创建ConcreteClass实例

ConcreteClass abc = new ConcreteClass();
abc.RandomMethod();

另请注意,在静态类中,它的所有成员都必须是静态的,这是有道理的,因为你不会实例化类,你应该可以调用它。成员直接。这就是为什么在我上面的静态类示例中,该方法也是静态的。

我希望这会有所帮助。