如何编写 C# 函数来添加此类的参数
本文关键字:参数 添加 何编写 函数 | 更新日期: 2023-09-27 18:36:39
我认为是非常基本的问题。
public class person {
public string name;
public int status;
public int ability;
public person() { }
public person(string name, int status, int ability)
{
this.name = name;
this.status = status;
this.ability = ability;
}
public static int praise() {
return ++status;
}
}
我想用 C# 写一个类,它有一个函数来添加每个新类的"状态"。 但是有一个错误,因为"状态"不是静态的。 如何解决此问题? 非常感谢。
看起来您正在尝试使特定人员的状态praise()
递增,这意味着它不应该是静态方法。
public int praise() {
return ++status;
}
称呼它你做
Person bob("bob", 0, 0);
bob.praise();
从方法声明中删除 static
修饰符:
public int praise() {
return ++status;
}
问题是您正在尝试在静态方法中递增成员变量。 我将假设您不希望 praise() 方法是静态的。 如果是这种情况,您可以将 praise() 方法更改为:
public int praise()
{
return ++status;
}
你可能想要
public int praise(){
return ++status;
}
这取决于您要实现的目标。
如果将status
设置为静态,则类的所有实例将共享相同的状态变量:
public static int status;
如果不将其设置为静态,则类的每个实例都将有自己的status
变量
public int praise() {
return ++status;
}
如何使您的字段静态?
public static int status;
另请注意,您应该使用属性而不是公共字段...
另一件事是,您在类的构造函数中设置status
字段。因此,status
领域的作用非常混乱。您是否真的要在多个实例之间共享它?
如果 status
字段并非对所有实例都通用,则 praise
方法可以将 person
的集合作为参数,并逐个递增其status
。
也许你应该澄清你的问题。
不能在静态上下文中引用非静态字段。 你可以让它成为静态的,但这取决于你的设计。