Visual Studio 2017 встроенные временные переменные - PullRequest
0 голосов
/ 07 мая 2018

У меня есть код, подобный следующему:

  using (Process proc = Setupprocess(comtorun))
            {
                proc.Start();
                while (!proc.StandardOutput.EndOfStream)
                {
                    string output = proc.StandardOutput.ReadLine();
                    if (output.Contains("library:"))
                    {
                        collectoutput.Add(output.Split(":")[1]);
                    }
                }
            }

в Visual studio он дал мне возможность встроить временную переменную и хотел переписать ее следующим образом:

  using (Process proc = Setupprocess(comtorun))
            {
                proc.Start();
                while (!proc.StandardOutput.EndOfStream)
                {

                    if (proc.StandardOutput.ReadLine().Contains("library:"))
                    {
                        collectoutput.Add(proc.StandardOutput.ReadLine().Split(":")[1]);
                    }
                }
            }

Я прав, когда я думаю, что когда он вызывает collectoutput.Add (proc.StandardOutput.ReadLine (). Split (":") [1]); что он на самом деле будет читать строку 2 вывода, а не строку 1?

1 Ответ

0 голосов
/ 08 мая 2018

Да, вы абсолютно правы, что это предложение вводит изменение кода - по сути, это ошибка. В конечном счете, нет встроенного декларативного способа сказать, что метод в .NET является чистой функцией. В некоторых случаях такое изменение будет совершенно корректным, тогда как в других (например, таких) оно будет плохим, и нет способа узнать, что это такое, в любом случае (без запуска поддерживаемого вручную чита - список времен, когда это известно - плохо или известно - хорошо). Итак: он предлагает эту функциональность для тех случаев, когда это будет полезно, без навязывания ее вам (она не отображается как рекомендуемое изменение, видимое по умолчанию, например - только появляется, когда вы активно выбираете переменную).

Итак, в данном случае: не используйте его.

...