web-dev-qa-db-ja.com

簡単なIfステートメント:C#

簡単なものですが、とにかくこれを短縮する方法はありますか?

基本的には、左または右の方向を決定します。左は1、右は0です。

C#の場合:

if (column == 0) { direction = 0; }
else if (column == _gridSize - 1) { direction = 1; }
else { direction = Rand.Next(2); }

これに続くステートメントは次のようになります。

if (direction == 1)
{
    // do something
}
else
{
    // do something else
}

ない場合、それは本当に重要ではありません!ちょっと興味があるんだけど:)

35

速記を使用して方向を取得するには:

int direction = column == 0
                ? 0
                : (column == _gridSize - 1 ? 1 : Rand.Next(2));

コードを完全に単純化するには:

if (column == gridSize - 1 || Rand.Next(2) == 1)
{
}
else
{
}
39
Mike Dour

三項演算子を使用する

direction == 1 ? dosomething () : dosomethingelse ();
27
Hyperboreus

はい。三項演算子を使用します。

condition ? true_expression : false_expression;
14
sgokhales

最近、私はスイッチケースの代替としてのelse ifステートメントを本当に楽しんでいます。私の意見では、これは読みやすく、場所を取りません。見てください:

var redirectUrl =
      status == LoginStatusEnum.Success ? "/SecretPage"
    : status == LoginStatusEnum.Failure ? "/LoginFailed"
    : status == LoginStatusEnum.Sms ? "/2-StepSms"
    : status == LoginStatusEnum.EmailNotConfirmed ? "/EmailNotConfirmed"
    : "/404-Error";

の代わりに

string redirectUrl;
switch (status)
{
    case LoginStatusEnum.Success:
        redirectUrl = "/SecretPage";
        break;
    case LoginStatusEnum.Failure:
        redirectUrl = "/LoginFailed";
        break;
    case LoginStatusEnum.Sms:
        redirectUrl = "/2-StepSms";
        break;
    case LoginStatusEnum.EmailNotConfirmed:
        redirectUrl = "/EmailNotConfirmed";
        break;
    default:
        redirectUrl = "/404-Error";
        break;
}
5
Piotr Kwiatek