目录
静态函数中调用非静态成员不能“无中生有”
在C#中,静态函数(也称为静态方法)是属于类的,而不是属于类的实例。
因此,静态函数不能直接访问类的实例成员(非静态成员),例如实例字段或实例方法,因为这些成员是与特定对象实例相关联的,不能没实例就直接调用,不能“无中生有”。
如果要在静态函数中访问非静态成员,你需要创建一个对象实例,并通过该实例来访问非静态成员。
public class MyClass
{
public int InstanceField;
public static void StaticMethod()
{
// 无法直接访问 InstanceField
// 需要通过对象实例来访问
MyClass obj = new MyClass();
obj.InstanceField = 10;
}
}
静态函数无法进行实例化来调用
但是要记着静态函数是属于类的,而不是属于类的实例。因此,不能使用类的实例来调用静态函数。需要通过类名来调用静态函数,例如:ClassName.StaticFunction()
。要记着,静态函数可无法进行实例化来调用噢。
(还有,静态类是一种特殊类型的类,它只包含静态成员,不能创建实例。)
非静态函数可以调用静态成员
因为首先非静态函数它要调用的话肯定是已经实例化了,没毛病。
而静态成员是属于类的,而不是属于类的实例。那就可以在非静态函数中直接通过类名访问静态成员,就像在静态函数中一样。
其次静态成员是属于长周期的,短周期调用长周期肯定是🆗的。