有人可以通过实例解释实例和静态成员之间的主要区别吗?
答案 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();
另请注意,在静态类中,它的所有成员都必须是静态的,这是有道理的,因为你不会实例化类,你应该可以调用它。成员直接。这就是为什么在我上面的静态类示例中,该方法也是静态的。
我希望这会有所帮助。