Я пытаюсь сделать цикл с условным оператором строки в C # - PullRequest
0 голосов
/ 03 ноября 2018

Я не могу избавиться от ошибки и не очень понимаю, что происходит.

Мой код выглядит так, и у меня всегда одно и то же сообщение об ошибке:

сообщение об ошибке: «Локальный или параметр с именем« test »не может быть объявлен в этой области, поскольку это имя используется во внешней локальной области для определения локального или параметра»

    static void Main(string[] args)
    {

        string test = String.Empty;

        while (!test[1].Equals('r'))
        {
            var privateKey = new Key(); // generate a random private key
            var publicKey = privateKey.PubKey;
            var Address_testnet = publicKey.GetAddress(Network.TestNet);
            string test = Convert.ToString(Address_testnet); 
        }

        Console.WriteLine("public address is {0}", test);

    }

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

Вы уже объявили test переменную из while, поэтому компилятор показывает вам это предупреждение. Некоторые операторы, такие как for, while, if и т. Д., Имеют собственную область видимости. Вы можете читать и заполнять внешние переменные, но внешний код не может использовать переменные, которые объявлены внутри этих операторов.

Вы можете прочитать эту статью, чтобы лучше понять: Переменная и область применения метода в Microsoft .NET

0 голосов
/ 03 ноября 2018

Вы уже создали тестовую переменную вне цикла, и вы пытаетесь создать ту же переменную внутри цикла. Попробуйте сделать это:

static void Main(string[] args)
{
    //here you wanna declare test as " r"
    string test = " r";

    while (!test[1].Equals('r'))
    {
        var privateKey = new Key(); // generate a random private key
        var publicKey = privateKey.PubKey;
        var Address_testnet = publicKey.GetAddress(Network.TestNet);
        //Remove "string" keyword in front of test
        test = Convert.ToString(Address_testnet); 
    }
    Console.WriteLine("public address is {0}", test);

}
0 голосов
/ 03 ноября 2018

попробуйте это:

static void Main(string[] args)
    {

        string test = "";

        while (!test[1].Equals('r'))
        {
            var privateKey = new Key(); // generate a random private key
            var publicKey = privateKey.PubKey;
            var Address_testnet = publicKey.GetAddress(Network.TestNet);
            test = Convert.ToString(Address_testnet); 
        }

        Console.WriteLine("public address is {0}", test);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...