我有一个程序,我使用类存储设置。我需要它来使用set和get函数来更改和存储设置。我试过这个,但是我没有让它发挥作用。任何人都可以帮我这个吗?
private enum _Difficulty { Easy, Normal, Hard };
public void SetDifficulty(Difficulty)
{
_Difficulty = Difficulty;
}
public enum GetDifficulty()
{
return _Difficulty;
}
在enums
和get
的课程中无法使用set
吗?
我还需要bool
和int
。
答案 0 :(得分:33)
这里有几个问题:
SetDifficulty
方法的参数只有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; }
}
如果你真的想让你的代码看起来像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;
}
}
答案 1 :(得分:2)
您的代码尝试为Difficulty
分配值,而实际上Difficulty
是enum
类型的名称。我鼓励使用getter和setter作为属性:
public enum Difficulty { Easy, Normal, Hard };
private Difficulty _difficulty;
public Difficulty CurrentDifficulty
{
get { return _difficulty; }
set { _difficulty = value; }
}
这样,您可以在特殊条件的setter中添加其他代码。要使用它,您只需执行以下操作:
//set
CurrentDifficulty = Difficulty.Easy;
//get
Difficulty theDifficulty = CurrentDifficulty;
答案 2 :(得分:1)
您想要使用的枚举需要公开。您还需要该枚举的实例来存储您正在设置的值,您当前正在将其设置为枚举声明。然后,您希望为类存储的内容和传入的内容使用相同的枚举类型。
public enum Difficulty { Easy, Normal, Hard };
public Difficulty { get; set; }
答案 3 :(得分:1)
使用enum
关键字指定枚举后,该枚举将作为一种类型,如class
或struct
。
以下是您如何使用自定义枚举实现属性:
public enum _Difficulty { Easy, Normal, Hard };
public _Difficulty Difficulty { get; set; }
答案 4 :(得分:0)
我不确定你是否正确使用它们。这可能会有所帮助......
private enum Difficulty { Easy, Normal, Hard };
private Diffuculty theDifficulty;
public void SetDifficulty(difficulty d)
{
theDifficulty = difficulty;
}
public Difficulty GetDifficulty()
{
return theDifficulty;
}
答案 5 :(得分:0)
枚举是类型而不是变量。像这样的东西会起作用:
public enum Difficulty { Easy, Normal, Hard };
private Difficulty _Difficulty;
public void SetDifficulty(Difficulty difficulty )
{
_Difficulty = Difficulty;
}
public Difficulty GetDifficulty()
{
return _Difficulty;
}
或更简洁地作为财产:
private Difficulty Difficulty {get; set;}
请注意,如果您希望通过公共方法访问枚举,则枚举必须为public
。
答案 6 :(得分:0)
这里有很多问题:
enum
是私密的,因此我们无法致电SetDifficulty
向其提供enum
的值。实际上,编译器不会允许这样做。SetDifficulty
的参数只是一个类型,它还需要一个变量名。也是编译器错误。你想要这样做 :
public enum Difficulty { Easy, Normal, Hard }
public Difficulty DifficultySetting { get; set; }
请注意,我必须将属性的名称更改为DifficultySetting
,因为它与枚举名称冲突。你使用了下划线,这也可以解决这个问题。但是我总是发现下划线是针对私人成员的,如果你想使用代码来使用这个enum
那么它就需要公开。使用诸如下划线之类的东西来装饰公共成员会分散名称本身的语义。在任何情况下,语义都取决于您的个人偏好,因此您可以根据需要修改这些名称。