Что такое i в цикле for
Не могу до конца понять, что такое i в цикле for. Понятно, что обычная переменная, можно другими символами имя ей задать. Понимаю, что она нужна для счёта, но путаюсь. Например: Мне нужно вывести список list:
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var list = new List<int>();
for (var i = 0; i < 15; i ++)
{
var input = Console.ReadLine();
var tp = int.TryParse(input, out int result);
if (tp == false)
{
Console.WriteLine("It`s not int");
}
list.Add(result);
}
for (var i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadLine();
}
}
}
Не понимаю, почему выводятся элементы списка. Мне кажется, написано: пока количество выведенных на экран элементов списка меньше, чем количество всех элементов, выводить на экран количество остальных элементов поочерёдно.
А вот зачем в Console.WriteLine написано, чтобы выводился i этого списка, я не понимаю. Ну, как бы, это тяжело объяснить. Что такое i этот? Объясните, пожалуйста.
Ответы (3 шт):
Если я вас правильно понял, вам непонятна строка Console.WriteLine(list[i]); Мы выводим не элемент i, а итый элемент списка list. Чтобы это понять, представьте на месте i любое число, например, Console.WriteLine(list[1]); Эта запись будет означать: "вывести первый элемент списка"
Во первых, i у вас используется в двух местах, но видимо как оно используется в первом цикле вам понятно. Если нет, вкратце - в первом цикле for просто 15 раз запрашивает ввод данных из консоли. В этом цикле переменная i не более чем итератор, который отсчитывает какое по счету число вы вводите.
Кстати, что любопытно, проверка у вас на int работает, но если не int, то лишь информирует, и все равно пытается добавлять в список введенное значение. Наверное так и было задумано....
Во вторых, во втором цикле Вы верно понимает, что это перебор элементов списка list. И тогда i при каждой итерации цикла указывает на i-й элемент из списка list. Получается, что вы просто по порядку перебираете с первого по последний элементы в списке и выводите их на экран. list[i] - это значение, которое хранится в списке на позиции i. В данном случае i уже можно считать индексом значения (применимо к списку list). Само значение i на экран у вас в коде нигде не выводится при этом. Только значение из списка list.
Как уже вам в комментариях подсказали, можете вместо i просто написать цифру. К примеру list[0] - первый элемент списка, list[10] - одинадцатый и так далее. Чтобы иметь возможность вводить и выводить произвольное количество значений, вставили такой вот цикл, вместо вывода конкретных индексов, их перебирают в цикле. И i во втором цикле никак не относится к i в первом цикле.
Переменная list это указатель на ячейку оперативной памяти, тоесть на первый элемент массива, list[0] это первый элемент т.к. смещение равно 0. list[1] смещает указатель на 1 элемент соответственно это уже указатель на 2й элемент массива. В вашем цикле переменная i меняет свое значение от 0 до 14 (i<15) получается что вы получаете первое значение, а потом 14 раз смещает указатель в памяти и получаете ещё 14 значений одно за другим. Таким образом имея одну переменную list вы можете получить 15 разных значений памяти а не одно как с обычной переменной.