1. First메서드 와 Take메서드
- First() : 1번째 요소를 가져오는 메서드
- Take(n) : n 번째 요소를 포함한 시퀀스(sequence)를 가져오는 메서드
2.First메서드와 Take메서드 차이점
- First메서드는 1번째 값을 가져오므로, 나중에 배열의 값을 변경해도 결과는 그대로입니다.
- 예제에서
numbers.First()
를 호출하는 순간 1번째 값을 가져옵니다.
- 예제에서
- Take메서드는 1번째 값과 시퀀스를 가져옵니다.
- 예제에서
numbers.Take(1)
을 호출하는 순간 1번째 값을 가져올 수 있는 권한과 시퀀스를 가져옵니다. - 실제로 값을 가져오는 건
ElementAt()
입니다. ElementAt()
호출 전에 배열 값의 변경이 이루어져서 변경된 값이 출력됩니다.
- 예제에서
2.1 사용예제
class Program
{
static void Main(string[] args)
{
Example_First();
Example_Take();
}
static void Example_First()
{
int[] numbers = { 1, 2, 3, 4, 5 };
var firstNumber = numbers.First();
numbers[0] = 0;
Console.WriteLine($"First() : {firstNumber}");
Console.ReadKey();
}
static void Example_Take()
{
int[] numbers = { 1, 2, 3, 4, 5 };
var firstNumber = numbers.Take(1);
numbers[0] = 0;
Console.WriteLine($"Take() : {firstNumber.ElementAt(0)}");
Console.ReadKey();
}
}
2.2 실행 결과
2.3 Take메서드의 예외발생
Take(2)
는numbers
배열의 2번째 요소를 호출할 수 있습니다.ElementAt(0)
는 1번째 요소의 값을 가져오려고 시도하면System.ArgumentOutOfRangeException
예외 발생합니다.static void Example_Take() { int[] numbers = { 1, 2, 3, 4, 5 }; var secondNumber = numbers.Take(2); Console.WriteLine($"Take() : {secondNumber.ElementAt(0)}"); Console.ReadKey(); }
3. 인스턴스화란?
- 인스턴스화는 클래스 내의 객체에 대해 특정한 변형을 정의하고, 이름을 붙인 다음, 그것을 물리적인 어떤 장소에 위치시키는 등의 작업을 통해, 인스턴스를 만드는 것을 의미한다.
- LINQ 사용에서 인스턴스화란 결과를 직접 가져오는 기능을 말합니다.
- LINQ 메서드는 지연실행과 인스턴스화가 있습니다.
- 지연실행 : 쿼리를 객체로 가져오기 위한 기능
- 인스턴스화 : 결과를 직접 가져오는 기능
Take()
호출이 지연실행이라 할 수 있고,ElementAt()
호출이 인스턴스화라고 이해할 수 있습니다.
'프로그래밍 > (도서)C#코딩의기술-실전' 카테고리의 다른 글
[C#] 코딩의기술(실전편) - 4.1 var VS object VS dynamic (0) | 2022.03.31 |
---|---|
[C#] 코딩의기술(실전편) - 3.13 열거 데이터의 순서 변경 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 3.7 Cast VS OfType (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 3.5 짧은쿼리 VS 긴 쿼리 (0) | 2022.03.31 |
[C#] 코딩의기술(실전편) - 3.4 배열 VS IEnumerable<T> (0) | 2022.03.31 |