クラスストアの設定を使用するプログラムがあります。 setを使用して、設定を変更および保存する関数を取得する必要があります。私はこれを試しましたが、動作しません。誰かがこれを手伝ってくれる?
private enum _Difficulty { Easy, Normal, Hard };
public void SetDifficulty(Difficulty)
{
_Difficulty = Difficulty;
}
public enum GetDifficulty()
{
return _Difficulty;
}
enums
とget
のクラスでset
を使用する方法はありませんか?
bool
とint
も必要です。
ここにはいくつかの問題点があります:
SetDifficulty
メソッドはDifficulty
だけのパラメーターを持っています-それはパラメーター名またはタイプを意味するのですか?SetDifficulty
メソッドがフィールドではなくtypeを設定しようとしていますGetDifficulty
メソッドがenum
を戻り値の型として使用しようとしており、フィールドではなくtypeを返している基本的に、あなたのenum
宣言が何を宣言しているかについて混乱しているようです-それはfieldを宣言しているのではなく、typeを宣言しています(そして、そのタイプの値は)。
私はあなたが欲しいと思う:
// 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; }
}
コードをC =の代わりにJavaのようにしたい場合は、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;
}
}
実際にDifficulty
がDifficulty
タイプの名前である場合、コードはenum
に値を割り当てようとします。代わりに、プロパティとしてゲッターとセッターを使用することをお勧めします。
public enum Difficulty { Easy, Normal, Hard };
private Difficulty _difficulty;
public Difficulty CurrentDifficulty
{
get { return _difficulty; }
set { _difficulty = value; }
}
このようにして、特別な条件のセッターに追加のコードを追加できます。これを使用するには、次の手順を実行するだけです。
//set
CurrentDifficulty = Difficulty.Easy;
//get
Difficulty theDifficulty = CurrentDifficulty;
使用する列挙型は公開する必要があります。また、設定する値を格納するためにその列挙型のインスタンスが必要です。現在、それを列挙型の宣言に設定しています。次に、クラスが保存するものと渡すものに同じ列挙型を使用します。
public enum Difficulty { Easy, Normal, Hard };
public Difficulty { get; set; }
enum
キーワードを使用して列挙型を指定すると、その列挙型はclass
またはstruct
のようにタイプとして機能します。
カスタム列挙でプロパティを実装する方法は次のとおりです。
public enum _Difficulty { Easy, Normal, Hard };
public _Difficulty Difficulty { get; set; }
ここにはいくつかの問題があります:
enum
は非公開なので、SetDifficulty
を呼び出してそのenum
の値を提供することはできません。実際、コンパイラーはこれを許可しません。SetDifficulty
の引数は単なる型であり、変数名も必要です。また、コンパイラエラー。それはのように見えるあなたはこれをしたい:
public enum Difficulty { Easy, Normal, Hard }
public Difficulty DifficultySetting { get; set; }
プロパティの名前をDifficultySetting
に変更する必要があることに注意してください。これは、列挙名と競合するためです。あなたはアンダースコアを使用しましたが、これもその問題を解決します。ただし、アンダースコアはプライベートメンバー用であり、コードを使用してこれを使用する場合は常にenum
であることが常にわかります。アンダースコアのようなものでパブリックメンバーを装飾すると、名前自体のセマンティクスが混乱します。いずれにせよ、セマンティクスは個人の好みに応じて決定されるため、これらの名前は必要に応じて変更できます。
あなたがそれらを正しく使用しているとは思えません。これは役立つかもしれません...
private enum Difficulty { Easy, Normal, Hard };
private Diffuculty theDifficulty;
public void SetDifficulty(difficulty d)
{
theDifficulty = difficulty;
}
public Difficulty GetDifficulty()
{
return theDifficulty;
}
列挙型はtypeではなくvariableではありません。このような何かがうまくいくでしょう:
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
にする必要があることに注意してください。