生存確認の判定結果を得る方法の色々
よく使われるものに生存判定があります。
これは、都度計算するのではなく、結果がもらえるように準備しておいて、外部から呼び出すのがいい作りになります。
そのために、メソッドやプロパティを別途用意しておいて、使いたい時にアクセスする方法がよく用いられます。
IsAliveメソッド(引数あり)
アクセスする方法
メソッドを考えてみましょう
引数にヘルス(健康値)を与え、結果をもらうようにしています。
bool isAlive = IsAlive(10);
引数; ヘルス(健康値)
戻り値: 生存の場合true、そうでない場合はfalse
冗長だがわかりやすい例
bool IsAlive(int health)
{
bool isAlive;
if (health > 0)
{
isAlive = true;
}
else
{
isAlive = false;
}
return isAlive;
}
三項演算子を使って変更した例
bool IsAlive(int health)
{
bool isAlive;
isAlive = (health > 0) ? true : false;
return isAlive;
}
三項演算子を使って直接戻り値とした場合
bool IsAlive(int health)
{
return (health > 0) ? true : false;
}
三項演算子のelse部分を省略できる例
条件式のみで、結果が真(true)の場合はtrueを、また擬の場合はfalseが得られることを利用して簡略化した。
bool IsAlive(int health)
{
bool isAlive;
isAlive = (health > 0);
return isAlive;
}
isAlive変数の宣言と代入を1行にした例
条件式のみで、結果が真(true)の場合はtrueを、また擬の場合はfalseが得られることを利用して簡略化した。
bool IsAlive(int health)
{
bool isAlive = (health > 0);
return isAlive;
}
ローカル変数のisAliveを使わなくても済む例
isAlive変数は、メソッド内で特定の計算のために使っているだけなので、省略しても良い
また、()も省略できます。なお、()に関しては、三項演算子のところから省略することができます。
bool IsAlive(int health)
{
return health > 0;
}
メソッドに式本体を使った例
インテリセンスを使って、式本体に変更した例です
bool IsAlive(int health) => health > 0;
IsAliveメソッド(引数なし)
health変数はあらかじめ宣言、代入されているものとします。
アクセスする方法
結果だけをもらうようにしています。()がついているのがメソッドの特徴です。
bool isAlive = IsAlive();
戻り値: 生存の場合true、そうでない場合はfalse
メソッドに式本体を使った例
インテリセンスを使って、式本体に変更した例です。
health変数は、他のメソッドから値の変更をされることを想定しています。
int health = 10;
bool IsAlive() => health > 0;
IsAliveプロパティ
今度は、プロパティで考えてみましょう
アクセスする方法
プロパティの場合、メソッドと違い引数はありません。呼び出すときは、フィールド変数のように扱えます。
bool isAlive = IsAlive;
戻り値: 生存の場合true、そうでない場合はfalse
基本の形
生死の確認なので、値を代入することはできないようにします。
そのため、setブロックはあえて削除しています。
health変数は、他のメソッドから変更されるものとしています。
int health = 10;
public bool IsAlive{
get
{
return health > 0;
}
}
プロパティを式本体に変更
インテリセンスを使って、ラムダ記号を使った式本体に変更してみましょう
int health = 10;
public bool IsAlive => health > 0;
補足
メソッドの説明で次の最終コードは、インテリセンスでプロパティに変換ができます。
メソッド(引数なし)の最後のコード
int health = 10;
bool IsAlive() => health > 0;
インテリセンスでプロパティへ変換
int health = 10;
public bool IsAlive => health > 0;
ディスカッション
コメント一覧
まだ、コメントがありません