Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этом вводном руководстве приведены общие сведения о языке C# и основах System.Collections.Generic.List<T> класса.
В этом руководстве описано, как научиться C#. Вы пишете код C# и видите результаты компиляции и выполнения этого кода. Он содержит ряд уроков, которые создают, изменяют и изучают коллекции. Вы работаете в первую очередь с классом List<T> .
Изучив это руководство, вы:
- Запустите пространство кода GitHub с помощью среды разработки C#.
- Создание различных типов списков.
- Изменение содержимого списка.
- Поиск и сортировка списков.
Предпосылки
У вас должно быть одно из следующих элементов:
- Учетная запись GitHub для использования GitHub Codespaces. Если у вас еще нет учетной записи, вы можете создать бесплатную учетную запись на GitHub.com.
- Компьютер со следующими инструментами:
Базовый пример списка
Чтобы запустить GitHub Codespace с средой учебника, откройте окно браузера в репозитории пространства кода учебника . Нажмите зеленую кнопку "Код" и вкладку "Пространства кода ". Затем выберите + знак, чтобы создать новое пространство Codespace с помощью этой среды. Если вы выполнили другие учебники в этой серии, вы можете открыть это пространство кода вместо создания нового.
При загрузке пространства кода создайте файл в папке учебников с именем lists.cs.
Откройте новый файл.
Введите или скопируйте следующий код в lists.cs:
List<string> names = ["<name>", "Ana", "Felipe"]; foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); }Запустите код, введя следующую команду в окне терминала:
cd tutorials dotnet lists.cs
Вы создали список строк, добавили в этот список три имени и напечатали имена заглавными буквами. Вы используете концепции, которые вы изучили в предыдущих руководствах, чтобы перебирать список.
Код для отображения имен использует функцию интерполяции строк . Когда перед string поставить символ $, можно внедрить код на C# в строку. Фактическая строка заменяет код C# значением, которое он создает. В этом примере он заменяет каждое {name.ToUpper()} имя, преобразованное в прописные буквы, так как вызывается String.ToUpper метод.
Давайте продолжаем изучать.
Изменение содержимого списка
Созданная коллекция использует List<T> тип. Этот тип сохраняет последовательности элементов. Вы указываете тип элементов между угловой скобкой.
Одним из важных аспектов этого List<T> типа является возможность увеличения или сжатия, что позволяет добавлять или удалять элементы. Вы можете увидеть результаты, изменив содержимое после его отображения.
Добавьте следующий код после написанного кода (цикл, который печатает содержимое):
Console.WriteLine(); names.Add("Maria"); names.Add("Bill"); names.Remove("Ana"); foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); }Вы добавили еще два имени в конец списка. Вы также удалили один из них. Выходные данные из этого блока кода отображают начальное содержимое, а затем выводит пустую строку и новое содержимое.
List<T> позволяет ссылаться на отдельные элементы также по индексу. Доступ к элементам с помощью маркеров
[и]. Вставьте следующий код после написанного вами и протестируйте.Console.WriteLine($"My name is {names[0]}."); Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");Вы не можете получить доступ к концу списка. Вы можете проверить длину списка, используя свойство Count.
Добавьте следующий код:
Console.WriteLine($"The list has {names.Count} people in it");Введите
dotnet lists.csеще раз в окне терминала, чтобы просмотреть результаты. В C#индексы начинаются с 0, поэтому самый большой допустимый индекс меньше числа элементов в списке.
Дополнительные сведения об индексах см. в статье "Изучение индексов и диапазонов ".
Поиск и сортировка списков
Наши примеры используют относительно небольшие списки, но ваши приложения могут часто создавать списки с гораздо большим количеством элементов, иногда в количестве тысяч. Чтобы найти элементы в этих больших коллекциях, необходимо выполнить поиск по списку различных элементов. Метод IndexOf ищет элемент и возвращает индекс элемента. Если элемент отсутствует в списке, IndexOf возвращается -1.
Попробуйте узнать, как это работает. Добавьте следующий код после того, как вы написали до сих пор:
var index = names.IndexOf("Felipe"); if (index == -1) { Console.WriteLine($"When an item is not found, IndexOf returns {index}"); } else { Console.WriteLine($"The name {names[index]} is at index {index}"); } index = names.IndexOf("Not Found"); if (index == -1) { Console.WriteLine($"When an item is not found, IndexOf returns {index}"); } else { Console.WriteLine($"The name {names[index]} is at index {index}"); }Возможно, вы не знаете, находится ли элемент в списке, поэтому всегда следует проверять индекс, возвращаемый IndexOf. Если
-1, то элемент не найден.Вы также можете сортировать элементы в списке. Метод Sort сортирует все элементы в списке в обычном порядке (в алфавитном порядке для строк). Добавьте этот код и снова выполните следующую команду:
names.Sort(); foreach (var name in names) { Console.WriteLine($"Hello {name.ToUpper()}!"); }
Списки других типов
До сих пор вы в списках использовали тип string. Давайте сделаем List<T>, используя другой тип. Давайте создадим набор чисел.
Добавьте следующий код в конце исходного файла:
List<int> fibonacciNumbers = [1, 1];Этот код создает список целых чисел и задает первые два целых числа значением 1. Последовательность Fibonacci, последовательность чисел, начинается с двух 1. Каждое следующее число Fibonacci найдено путем принятия суммы предыдущих двух чисел.
Добавьте следующий код:
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1]; var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2]; fibonacciNumbers.Add(previous + previous2); foreach (var item in fibonacciNumbers) { Console.WriteLine(item); }Введите
dotnet lists.cs, чтобы увидеть результаты в окне терминала.
Вызов
Узнайте, можно ли объединить некоторые понятия из этого и более ранних уроков. Расширьте то, что вы сделали на данном этапе с числами Фибоначчи. Попробуйте написать код, чтобы создать первые 20 чисел в последовательности. (Как намек, 20-й номер Фибоначчи равен 6765.)
Ты придумала что-то вроде этого?
List<int> fibonacciNumbers = [1, 1];
while (fibonacciNumbers.Count < 20)
{
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
}
foreach (var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
При каждой итерации цикла вы принимаете последние два целых числа в списке, суммируете их и добавляете это значение в список. Цикл повторяется до добавления в список 20 элементов.
Вы завершили руководство по списку. Дополнительные сведения о коллекциях .NET см. в следующих статьях:
- Выбор типа коллекции
- часто используемые типы коллекций
- Когда следует использовать универсальные коллекции
Очистка ресурсов
GitHub автоматически удаляет пространство Codespace через 30 дней бездействия. Если вы планируете ознакомиться с дополнительными руководствами в этой серии, вы можете оставить ваш Codespace активным. Если вы готовы посетить сайт .NET , чтобы скачать пакет SDK для .NET, можно удалить пространство Codespace. Чтобы удалить ваш Codespace, откройте окно браузера и перейдите к вашим Codespace. В окне отобразится список ваших codespaces. Выберите три точки (...) в записи для пространства кода учебника для обучения и выберите удалить.