📅  最后修改于: 2023-12-03 14:40:15.913000             🧑  作者: Mango
编程中常常会遇到类的静态成员和实例成员的使用问题。其中,静态成员是属于类的,而不属于该类的任何实例。而实例成员则属于类的每个实例对象。在使用静态成员时,不需要创建该类的实例对象来访问该成员。而在使用实例成员时,则需要通过实例对象来访问该成员。
CS0120 是 C# 编译器的一种错误提示,表示当访问非静态字段、方法或属性时,需要先创建该类的实例对象,并通过该对象来访问实例成员。
下面是一个简单的代码片段,演示了如何在使用非静态字段、方法或属性时,需要对象引用。
public class PlayerControls
{
public string currentState;
// 构造函数
public PlayerControls()
{
currentState = "Idle";
}
// 实例方法
public void Move()
{
currentState = "Moving";
}
// 静态方法
public static void Attack()
{
currentState = "Attacking"; // 报错,无法访问非静态字段
}
}
class Program
{
static void Main(string[] args)
{
PlayerControls player1 = new PlayerControls(); // 创建实例对象
player1.Move(); // 调用实例方法
Console.WriteLine(player1.currentState); // 输出:Moving
PlayerControls.Attack(); // 报错,需要对象引用
}
}
如果遇到 CS0120 错误,需要考虑以下两种解决方案:
一般情况下,我们应该根据实际需求来决定使用静态成员还是实例成员。如果需要访问实例成员,则必须先创建该类的实例对象,并通过该对象来访问实例成员。