1
    public bool ContainsUnicodeCharacter(char[] input)
    {
        const int MaxAnsiCode = 255;
        bool temp;
        string s;

        foreach (char a in input)
        {
            s = a.ToString();
            temp = s.Any(c => c > MaxAnsiCode);

            if (temp == false)
            {
                return false;
            }
        }            
    }

このコードは、入力 char 配列に Unicode が存在するかどうかをチェックするために使用されます。

「ContainsUnicodeCharacter(char[])': not all code paths return a value」というエラー メッセージが表示されました。

ここで問題が発生しました。助けてください。ありがとうございました。

4

4 に答える 4

5

あなたの方法はよく考えられていません。それははるかに簡単に行うことができます:

public static bool ContainsUnicodeCharacter(this IEnumerable<char> input)
{
    const int MaxAnsiCode = 255;
    return input.Any(c => c > MaxAnsiCode);
}

理由もなく、そこに 2 つのネストされたループがありました。

メソッドを一般的に適用可能な拡張メソッドにしました。

于 2013-05-30T15:22:35.767 に答える
3

return true;最後の の直前に追加する必要があり}ますが、テストが逆になっているとも思います。

public bool ContainsUnicodeCharacter(char[] input)
{
    const int MaxAnsiCode = 255;
    bool temp;
    string s;

    foreach (char a in input)
    {
        s = a.ToString();
        temp = s.Any(c => c > MaxAnsiCode); // true if unicode found

        if (temp == true)
        {
            return true;
        }
    }

    return false;
}
于 2013-05-30T15:19:11.047 に答える
3

@egruninの答えに加えて、結果の文字配列でLinqメソッドを使用できるように、すべての文字をループしてから文字列にキャストする理由がわかりません。次のように、メソッド全体を (同じロジックを維持しながら) 単純化できます。

public bool ContainsUnicodeCharacter(char[] input)
{
    const int MaxAnsiCode = 255;

    return input.Any(c => c > MaxAnsiCode);
}
于 2013-05-30T15:23:28.270 に答える
0

条件付きの場合の一部であるreturnステートメントは1つしかありません...前述のように追加できreturn true;ますが、そのエラーが発生した理由は、tempがfalseと同等ではない場合、関数が何も返さないためです

public bool ContainsUnicodeCharacter(char[] input)
    {
        const int MaxAnsiCode = 255;
        bool temp;
        string s;

        foreach (char a in input)
        {
            s = a.ToString();
            temp = s.Any(c => c > MaxAnsiCode);
            if (temp == false)
            {
               return false;
             }
        } 
         return true;  
    }
于 2013-05-30T15:23:17.120 に答える