1

私はコードを書きました:

do
{
    string html = new StreamReader(response3.GetResponseStream(),
                                   Encoding.UTF8).ReadToEnd();
    if (html.Contains("link-censored"))
    {
        log("[!] Banned link\r\n");
        return -2; // delete url from txt
    }
    else if (html.Contains("data-with-image"))
    {
        log("[+] Add link\r\n");
    }
    else
    {
        log("[?] Smthng wrong with link\r\n");
        return -2; //-3
    }
}
while (html.Contains("data-with-image"));

しかし、最後の行に「The name 'html' does not exist in the current context」というエラーがあります。

4

4 に答える 4

4

html;でスコープされます。do {...}宣言を移動するだけです:

string html;
do
{
    html = new StreamReader(response3.GetResponseStream(),
                                   Encoding.UTF8).ReadToEnd();
    //...
}
while (html.Contains("data-with-image"));

に代入する必要がないことに注意してくださいhtml。「明確な代入」のルールにより、 に到達するまでに値があることが保証されるためwhileです。

于 2012-12-05T10:04:58.220 に答える
3

文字列変数のスコープは のhtml本体内にあります。do-while loopループ本体の外側で html を定義して、 からアクセスできるようにしcondition partます。

string html = string.Empty; 

do
{
    html = new StreamReader(response3.GetResponseStream(),
                                   Encoding.UTF8).ReadToEnd();
    if (html.Contains("link-censored"))
    {
        log("[!] Banned link\r\n");
        return -2; // delete url from txt
    }
    else if (html.Contains("data-with-image"))
    {
        log("[+] Add link\r\n");
    }
    else
    {
        log("[?] Smthng wrong with link\r\n");
        return -2; //-3
    }
}
while (html.Contains("data-with-image"));
于 2012-12-05T10:04:29.040 に答える
1

予想される条件が見つかったら終了します。

string html = string.Empty; 

do
{
    html = new StreamReader(response3.GetResponseStream(),
                                   Encoding.UTF8).ReadToEnd();
    if (html.Contains("link-censored"))
    {
        log("[!] Banned link\r\n");
        return -2; // delete url from txt
    }
    else if (html.Contains("data-with-image"))
    {
        log("[+] Add link\r\n");
        return 0;
    }
    else
    {
        log("[?] Smthng wrong with link\r\n");
        return -2; //-3
    }
}
while (html.Contains("data-with-image"));
于 2012-12-05T10:34:36.660 に答える
0

問題は、変数「html」がループ内にしか存在しないことだと思います。ループの直前に宣言してみてください。

string html = null;
do {
    html = ...
    ...
} while(html.Contains("data-with-image"));
于 2012-12-05T10:08:30.070 に答える