C#如何在类中使用get,set和use enums

use*_*591 12 c# int enums boolean class

我有一个程序,我使用类存储设置.我需要它来使用set和get函数来更改和存储设置.我试过这个,但我没有让它发挥作用.任何人都可以帮我这个吗?

    private enum _Difficulty { Easy, Normal, Hard };

    public void SetDifficulty(Difficulty)
    {
        _Difficulty = Difficulty;
    }

    public enum GetDifficulty()
    {
        return _Difficulty;
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法enums在课堂上使用getset

我也需要这个boolint.

Jon*_*eet 35

这里有几个问题:

  • 你的枚举是私密的,但你的方法是公开的.因此,您不能使您的方法返回类型为枚举类型,或具有该类型的参数
  • 你的SetDifficulty方法有一个参数just Difficulty- 是指参数名称还是类型?
  • 您的SetDifficulty方法是尝试设置类型而不是字段
  • 您的GetDifficulty方法尝试enum用作返回类型,然后返回类型而不是字段

基本上,您似乎对enum声明声明的内容感到困惑- 它不是声明一个字段,而是声明一个类型(并指定该类型的命名值是什么).

我怀疑你想要:

// Try not to use nested types unless there's a clear benefit.
public enum Difficulty { Easy, Normal, Hard }

public class Foo
{
    // Declares a property of *type* Difficulty, and with a *name* of Difficulty
    public Difficulty Difficulty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果你真的想让你的代码看起来像Java而不是C#,你可以使用get/set方法:

public enum Difficulty { Easy, Normal, Hard }

public class Foo
{
    private Difficulty difficulty;

    public void SetDifficulty(Difficulty value)
    {
        difficulty = value;
    }

    public Difficulty GetDifficulty()
    {
        return difficulty;
    }
}
Run Code Online (Sandbox Code Playgroud)


DLe*_*Leh 5

一旦使用关键字指定枚举enum,该枚举就充当类型,就像 aclassstruct一样。

以下是使用自定义枚举实现属性的方法:

public enum _Difficulty { Easy, Normal, Hard };
public _Difficulty Difficulty { get; set; }
Run Code Online (Sandbox Code Playgroud)


Vla*_*lad 5

您的代码尝试分配Difficulty一个值,而实际上Difficultyenum类型的名称。我鼓励使用 getter 和 setter 作为属性:

public enum Difficulty { Easy, Normal, Hard };

private Difficulty _difficulty;

public Difficulty CurrentDifficulty
{
    get { return _difficulty; }
    set { _difficulty = value; }
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在 setter 中为特殊条件添加额外的代码。要使用它,您只需执行以下操作:

//set
CurrentDifficulty = Difficulty.Easy;

//get
Difficulty theDifficulty = CurrentDifficulty;
Run Code Online (Sandbox Code Playgroud)