Я новичок в программировании. Я хотел бы реализовать программу с ключевым словом yield. Итак, я создал new List и попросил пользователя ввести значения списка через консоль.
После этого я добавил foreach к этому списку. И проверил условие, "конкретная ожидаемая строка" присутствует в списке или нет с ключевым словом yield.
Мои ожидания:
Моя реализация:
Я создал список.
установите емкость этого списка на 6.
Получите ввод для пользователя через консоль.
Наконец, проверьте, что введенный пользователем список значений имеет значение «TamilSelvi» или нет, с помощью yield.
using System;
using System.Collections.Generic;
using System.Collections;
namespace yield_Keyword_in_C_Sharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Implementation of Yield Keyword in C# with
List");
Console.WriteLine();
// Create a List
List<string> names = new List<string>();
names.Capacity = 6;
Console.WriteLine("Get the Input From the User");
Console.WriteLine();
//Get the List Input From the User
foreach (string n in names)
{
string temp = Console.ReadLine();
if (temp.Length != 0 && temp != " " && temp != " ")
{
names.Add(temp);
temp = string.Empty;
}
}
//Print the List values entered by the user in the Console Window
Console.WriteLine("Print the Values Entered by the User");
Console.WriteLine();
foreach (string na in names)
{
Console.WriteLine(na);
}
Console.WriteLine();
Console.WriteLine("Get the TamilSelvi in above list with the help
of yield keyword");
display(names);
void display(List<string> words) // display method implementation
{
foreach (string word in words)
{
if (word == "TamilSelvi") yield return word;
}
}
Console.WriteLine();
Console.ReadLine();
}
}
}
Ожидаемый результат:
Реализация ключевого слова Yield в C# со списком
Получите информацию от пользователя
Тирунавуккарасу
ТамилСелви
Веннилла
Сабаринатан
Мухупракаш
Мутарасан
Печать значений, введенных пользователем
Тирунавуккарасу
ТамилСелви
Веннилла
Сабаринатан
Мухупракаш
Мутарасан
Получите TamilSelvi в приведенном выше списке с помощью ключевого слова yield
ТамилСелви
Фактический результат: Приложение не удалось построить. Столкнувшись со следующей ошибкой.
Ошибка:
Тело 'display (List words)' не может быть блоком итератора, потому что 'void' не является типом интерфейса итератора.
Тип возвращаемого значения pf display function должен быть перечислимым из строки, и вы должны перебирать это возвращаемое значение для правильной работы. Надеюсь, что это поможет вам.





Вы неправильно используете yield, вам нужно вернуть IEnumerable<T>
IEnumerable<string> display(List<string> words) // display method implementation
{
foreach (string word in words)
{
if (word == "TamilSelvi") yield return word;
}
}
использование
var result = display(names);
foreach (var name in result)
{
Console.WriteLine(name);
}
Дополнительные ресурсы
Iterator methods and get accessors
The declaration of an iterator must meet the following requirements:
The return type must be IEnumerable, IEnumerable, IEnumerator, or IEnumerator.
The declaration can't have any in ref or out parameters.
Метод с
Yieldдолжен иметь возвращаемое значение какIEnumerable<T>