[C# 문법] C# yield
- C#/C# 문법
- 2021. 8. 22. 07:57
참고
- https://www.csharpstudy.com/CSharp/CSharp-yield.aspx
- https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/yield
소개
- 오늘은 C# 문법에서
yield
키워드가 무엇이고 어느 경우에 사용하는지에 대해서 알려드리려고 합니다.
yield 키워드
yield
키워드는 호출자에게 컬렉션 데이터를 하나씩 리턴할 때 사용합니다.- 흔히
Emuerator(iterator)
라고 불리우는 이러한 기능은 집합적인 데이터셋으로부터 데이터를 하나씩 호출자에게 보내주는 역학을 합니다. - yield는 yield return 또는 yield break의 2가지 방식으로 사용됩니다.
- yield return은 컬렉션 데이터를 하니씩 리턴하는데 사용됩니다.
- yield break는 리턴을 중지하고 iteration 루프를 빠져 나올 때 사용됩니다.
- 그럼 yeild 관련 예제 코드를 작성해 보도록 하겠습니다.
yield 예제코드
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApp7
{
static class Program
{
static void Main(string[] args)
{
// yield return 구문 예제
foreach (var item in GetNumber())
{
Console.WriteLine($"{item}");
}
foreach (var student in GetStudent())
{
Console.WriteLine($"학생 이름 : {student.Name} 나이 : {student.Age} 성적 : {student.Score} 등급 : {student.Grade}");
}
}
static IEnumerable<Student> GetStudent()
{
var students = InitialStudent();
foreach (var item in students)
{
yield return item;
}
}
static IEnumerable<int> GetNumber()
{
yield return 10;
yield return 20;
yield return 30;
}
static List<Student> InitialStudent()
{
List<Student> list = new List<Student>()
{
new Student() { Name = "범범조조", Age = 20, Grade = "A", Score = 100 },
new Student() { Name = "유재석", Age = 21, Grade = "B", Score = 10 },
new Student() { Name = "김종국", Age = 22, Grade = "C", Score = 89 },
new Student() { Name = "송지효", Age = 20, Grade = "D", Score = 60 },
new Student() { Name = "하하", Age = 20, Grade = "A+", Score = 20 },
new Student() { Name = "지석진", Age = 40, Grade = "F", Score = 55 },
new Student() { Name = "아이유", Age = 30, Grade = "A", Score = 64 },
new Student() { Name = "정형돈", Age = 20, Grade = "A", Score = 79 },
new Student() { Name = "김성주", Age = 20, Grade = "A", Score = 29 }
};
return list;
}
}
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public string Grade { get; set; }
public int Score { get; set; }
}
}
실행 결과
10
20
30
학생 이름 : 범범조조 나이 : 20 성적 : 100 등급 : A
학생 이름 : 유재석 나이 : 21 성적 : 10 등급 : B
학생 이름 : 김종국 나이 : 22 성적 : 89 등급 : C
학생 이름 : 송지효 나이 : 20 성적 : 60 등급 : D
학생 이름 : 하하 나이 : 20 성적 : 20 등급 : A+
학생 이름 : 지석진 나이 : 40 성적 : 55 등급 : F
학생 이름 : 아이유 나이 : 30 성적 : 64 등급 : A
학생 이름 : 정형돈 나이 : 20 성적 : 79 등급 : A
학생 이름 : 김성주 나이 : 20 성적 : 29 등급 : A
- 위와같이
yield return
을 통해서 컬렉션 내의 요소를 하나씩 가져오는 것을 확인할 수 있습니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# LINQ SequenceEqual 메서드 (0) | 2021.08.22 |
---|---|
[C# 문법] C# LINQ Count 메서드 (0) | 2021.08.22 |
[C# 문법] C# LINQ Average 평균값 구하기 (0) | 2021.08.22 |
[C# 문법] C# LINQ Range 메서드 - 연속된 값 설정하기 (0) | 2021.08.21 |
[C# 문법] C# LINQ Repeat 메서드 - 동일한 값 채우기 (0) | 2021.08.21 |
이 글을 공유하기