読者です 読者をやめる 読者になる 読者になる

AOJ で string.Join の第2引数に int[] を渡すとコンパイルエラーになる

AOJC# コードのコンパイルエラーに関するメモです。

AOJ の mono のバージョンのためか、string.Join の第2に引数に int[] を渡すとコンパイルエラーになるようです。その回避方法です。

    // OK
    static void Display1(int[] xs) {
        string[] ss = xs.Select(e => e.ToString()).ToArray();
        Console.WriteLine(string.Join(" ", ss));
    }

    // NG: コンパイルエラー
    // error CS1502: The best overloaded method match for `string.Join(string, string[])' has some invalid arguments
//    static void Display2(int[] xs) {
//        Console.WriteLine(string.Join(" ", xs));
//    }

    // OK: string[] にキャストするとコンパイルできる
    static void Display3(int[] xs) {
        Console.WriteLine(string.Join(" ", (string[])xs.Select(e => e.ToString()).ToArray()));
    }

ちなみに、mono 4.0.1 だと上記のコードはいずれも問題なくコンパイルできます。