Возможно ли преобразование цикла foreach в цикл for или наоборот с помощью ReSharper? - PullRequest
6 голосов
/ 18 июня 2010

Можно ли пометить блок кода цикла foreach и преобразовать его в цикл for с помощью ReSharper?

Или с помощью Visual Studio?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 18 июня 2010

Да, ReShaper может это сделать.Проверено в VS2010 + R # 5

До:

        var a = new int[] {1, 2, 3, 4};
        foreach (var i in a)
        {

        }

После:

    var a = new int[] {1, 2, 3, 4};
    for (int index = 0; index < a.Length; index++)
    {
        var i = a[index];
    }
1 голос
/ 02 января 2019

Вы даже можете сделать это без Resharper сейчас (протестировано с Visual Studio 2017 для проекта C #):

int[] array = new int[3] { 1, 2, 3 };

foreach (int item in array)
{
   int someVariable = item;
   //Your logic
}

Становится

int[] array = new int[3] { 1, 2, 3 };

for (int i = 0; i < array.Length; i++)
{
   int item = array[i];
   int someVariable = item;
  //Your logic
}

(И наоборот!)Для этого изменения вам просто нужно нажать на слово «foreach» или «для» и найти значок отвертки, показанный слева, щелкнуть по нему и выбрать «преобразовать в» для «/» преобразовать в «foreach»,(см. ссылку ниже, если вы никогда не видели этот значок)

Надеюсь, это кому-то помогло (даже если это очень старая запись!)

Visual Studioзначок отвертки

0 голосов
/ 09 августа 2012

работает отлично, как сказал rdkleine, и образец работает отлично.
НО: если ваша коллекция простая IEnumerable<T>, она не будет работать (разумно).

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