Смена предметов с помощью foreach - PullRequest
3 голосов
/ 05 июня 2011

Это в основном теоретический вопрос, т. Е. Мне не нужно практическое решение, но при использовании foreach в MS V C # 2010 со следующим кодом:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            int[] ints = new int[7]{0,0,0,0,0,0,0};
           foreach (int i in ints)
           {
                i = 10;

           }
           Console.ReadKey();
        }
    }
}

Я получаю ошибку, которая говорит мне, что я не могу изменить i, потому что это переменная foreach, теперь, если бы я захотел, я мог выполнить эту простую задачу несколькими другими способами, но дело в том, что я ничего не видел в документации, которая запрещает то, что я пытаюсь сделать, и я думаю, foreach должен дать вам возможность изменить переменную в списке.

Я что-то упускаю?

Ответы [ 2 ]

6 голосов
/ 05 июня 2011

Если вы foreach превысили коллекцию, вы получите элементы только для чтения. Если вы измените цикл на традиционный for, вы можете изменить содержимое массива:

  for (int index = 0; index < ints.Length; ++index)
  {
      ints[index] = 10;
  }
2 голосов
/ 05 июня 2011

Вместо этого используйте цикл for и измените значения, используя ints [i]

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