4

次の関数は、「割り当てられていないローカル変数 'intLast' を使用しています。何が間違っているのかわかりません。

    static string RemovePath(string strInput)
    {

        int intLast;

        for (int i = 1; i < strInput.Length; i++)
        {
            if (strInput.Substring(i, 1) == @"\")
            {
                intLast = i;
            }
        }

        string strOutput = strInput.Substring(strInput.Length - intLast);

        return strOutput;
    }
4

7 に答える 7

2

intLast次の行で変数を使用しています。

string strOutput = strInput.Substring(strInput.Length - intLast);

ただし、変数は特定の条件 (strInput.Length > 1およびstrInput.Substring(i, 1) == @"\") でのみ値を持ちます。したがって、エラー。

これを解決するには、宣言にデフォルト値を指定します。

int intLast = 0; // or any default value.

于 2013-03-22T11:55:13.317 に答える
0

次のように変数を初期化する必要があります

int intLast = 0;

コードがif条件に到達しない場合、割り当てられていないままになる可能性があるためです。

于 2013-03-22T11:56:11.883 に答える
0

intLastループの実行は実行時に決定されるため、ループは値が割り当てられることを保証できないため、何らかの値で初期化します。

 int intLast = 0;

次の行は、値を割り当てるために制御がループに入らない可能性があるため、割り当てられていない変数を求めています。

string strOutput = strInput.Substring(strInput.Length - intLast);
于 2013-03-22T11:52:53.317 に答える
0

intLast条件内でのみ代入するため、コンパイラの観点からは、初期化せずに使用することができます。

使用する予定がない場合でも、開始時にデフォルト値に初期化する必要があります。

int intLast = 0
于 2013-03-22T11:53:03.650 に答える
0

にデフォルト値を割り当てる必要がありますintLast

これを試して:

static string RemovePath(string strInput)
{
    int intLast = 0;

    for (int i = 1; i < strInput.Length; i++)
    {
        if (strInput.Substring(i, 1) == @"\")
        {
            intLast = i;
        }
    }

    string strOutput = strInput.Substring(strInput.Length - intLast);

    return strOutput;
}
于 2013-03-22T11:53:17.833 に答える
0

ただ編集

int intLast = 0;

コード全体は次のようになります。

static string RemovePath(string strInput) { int intLast = 0;

    for (int i = 1; i < strInput.Length; i++)
    {
        if (strInput.Substring(i, 1) == @"\")
        {
            intLast = i;
        }
    }

    string strOutput = strInput.Substring(strInput.Length - intLast);

    return strOutput;
}

intLast最初にゼロに割り当てるだけです。

于 2013-03-22T11:53:18.917 に答える
0

変数を初期化する必要があります。intLast

intLastコンパイラは、変数 likeが何があっても割り当てられることを知りません。

 int intLast = 0;
于 2013-03-22T11:53:43.233 に答える