0

質問: else ステートメントに到達できません。何が間違っていますか?

プログラミングは非常に新しく、型を比較しようとしています。たとえば、整数を求めているときに人々が文字列を入力できないなどです。

私のコードはおそらくかなり悪いです。ヘッダーを取得できれば、何をすべきか、if 引数が else 部分をスキップする理由は本当にうれしいです!

ありがとう!

class Program
{
    static void Main(string[] args)
    {            
        int integer = 0;

        start:
        Console.WriteLine("How old are you?: ");
        int svar = int.Parse(Console.ReadLine());

        Utility.CompareTypes(svar, integer);

            if (true)
        {
            Console.WriteLine("Thanks");

        }
            else
            {
                Console.WriteLine("You have to enter a number!");
                goto start;
            }

    }
}

class Utility
{

    public static bool CompareTypes<T01, T02>(T01 type01, T02 type02)
    {
        return typeof(T01).Equals (typeof(T02));
    }

}

:c

4

1 に答える 1

4

それは実際にはコードの問題ではなく、ロジックの問題です...

if (true) // <--- this will ALWAYS be true
{
    Console.WriteLine("Thanks");
}
else // <--- therefore this will NEVER happen
{
    Console.WriteLine("You have to enter a number!");
    goto start;
}

elseブロックは論理的な状況下では決して実行できないため、コードのブロック全体を次のように簡略化できます。

Console.WriteLine("Thanks");

elseブロックが実行されるためには、ステートメントでチェックされる条件が である必要ifがありますfalse。現在、実際の状態をチェックしていません。ハードコードされたtrue値だけです。

おそらく、前のコード行の結果を使用するつもりでしたか? このようなもの:

var typesAreSame = Utility.CompareTypes(svar, integer);

if (typesAreSame)
{
    //...
于 2016-02-01T16:25:41.007 に答える