if文での評価はbool型のみしか受け付けない

プログラミングC# 第6版 2.7.1


C#ではifで値を評価する際に、bool型以外は使用できないようです。

using System;

class Program {
    static void Main() {
        int i = 0;
        if ( i ) { // iはintなのでコンパイルエラー
            Console.WriteLine("Hello, World!");
        }
    }
}
$ csc main.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

main.cs(8,11): error CS0029: 型 'int' を型 'bool' に暗黙的に変換できません。

このようにコンパイルエラーとなります。これを正しく動かすためには以下のようにしなくてはなりません。

using System;

class Program {
    static void Main() {
        int i = 0;
        if ( i != 0 ) { // 比較演算子はbool型が返る
            Console.WriteLine("Hello, World!");
        }
    }
}

C++では0かそれ以外でif文が書けたので、C#との違いとして気を付けないといけないですね。