Как объявить открытую строку в цикле while (C #) - PullRequest
3 голосов
/ 17 июля 2011

Я сейчас пытаюсь объявить открытую строку в цикле while, так как я хотел бы использовать ее (строку) в других методах

Строка, о которой идет речь, это "s"

private void CheckLog()
{
    bool _found;
    while (true)
    {
        _found = false;
        Thread.Sleep(5000);
        if (!System.IO.File.Exists("Command.bat")) continue;
        using (System.IO.StreamReader sr = System.IO.File.OpenText("Command.bat"))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                if (s.Contains("mp4:production/CATCHUP/"))
                {
                    _found = true;
                    break;
                }
            }
        }
    }
}

Ответы [ 3 ]

4 голосов
/ 17 июля 2011

вы не можете объявить public строку внутри метода.Попробуйте это:

string s = "";
private void CheckLog()
{
    bool _found;
    while (true)
    {
        _found = false;
        Thread.Sleep(5000);
        if (!System.IO.File.Exists("Command.bat")) continue;
        using (System.IO.StreamReader sr = System.IO.File.OpenText("Command.bat"))
        {
            //s = "VALUE";
            while ((s = sr.ReadLine()) != null)
            {
                if (s.Contains("mp4:production/CATCHUP/"))
                {
                    _found = true;
                    break;
                }
            }
        }
    }
}
0 голосов
/ 17 июля 2011

Лучше передать строку в качестве аргумента by-ref функции или вернуть ее из функции.Объявление его как члена не кажется хорошей идеей.

public string CheckLog(){}
0 голосов
/ 17 июля 2011

Вы должны создать глобальную переменную и присвоить ее, например,

public class MyClass
{
    public string s;
    private void CheckLog() { ... }
}

В любом методе вы можете использовать его, не забудьте проверить, если s.IsNullOrEmpty(), чтобы избежать получения исключения NullPointerException (также я предполагаю, что строка должна содержать что-то).

...