如何编写 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# 写一个类,它有一个函数来添加每个新类的"状态"。 但是有一个错误,因为"状态"不是静态的。 如何解决此问题? 非常感谢。

如何编写 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

也许你应该澄清你的问题。

不能在静态上下文中引用非静态字段。 你可以让它成为静态的,但这取决于你的设计。