반응형
확장메서드란?
확장 메서드는 기존 클래스의 메서드를 변경하지 않고 새로운 메서드를 추가할 수 있는 기능이다. 확장 메서드를 사용하면 작성한 클래스에 새로운 메서드를 추가할 수 있다. 이를 통해 코드의 가독성을 높이고, 반복적인 작업을 줄일 수 있다.
특징?
- 확장 메서드를 갖는 class는 static이어야한다.
- 확장 메서드는 static 메서드여야한다.
- 확장 메서드의 첫 번째 매개 변수는 this 키워드여야한다.
- 확장 메서드는 인스턴스 메서드처럼 사용할 수 있지만, 정적 메서드처럼 호출된다.
주의할 점
- 확장 메서드는 정적 메서드이므로, 인스턴스 변수에 접근할 수 없다.
- 동일한 이름의 확장 메서드가 여러 개 존재할 경우, 호출 시 원하지않는 결과가 나올 수 있다.
- 확장 메서드는 메서드의 인자로 null 값을 전달할 수 있다.
문제
using System;
namespace ArrayExtensions
{
public static class ArrayExtension
{
public static double CalculateAverage(this int[] array)
{
// TODO: 확장 메서드 CalculateAverage를 구현하세요
//
}
}
class Program
{
static void Main(string[] args)
{
int[] numbers = { 1, 2, 3, 4, 5 };
// 확장 메서드를 사용하여 배열의 평균값을 계산하고 출력
double average = numbers.CalculateAverage();
Console.WriteLine($"The average is: {average}");
}
}
}
풀이
using System;
namespace ArrayExtensions
{
public static class ArrayExtension
{
public static double CalculateAverage(this int[] array)
{
double result = 0.0d;
result = (double)arr.Sum() / arr.Length;
return result;
}
}
class Program
{
static void Main(string[] args)
{
int[] numbers = { 1, 2, 3, 4, 5 };
// 확장 메서드를 사용하여 배열의 평균값을 계산하고 출력
double average = numbers.CalculateAverage();
Console.WriteLine($"The average is: {average}");
}
}
}
오늘의 회고
사실 부끄럽지만 이런 개념 하나하나를 짚고 넘어가는게 아니였기에 문제로 받아봤을때 당황할 정도였다.
실습문제는 쉽게 풀었지만 확장 메서드가 무엇인지 묻는 문제는 제대로 답변을 못하고 망설였기에 나도 이런 내가 이상했다.
개념도 자세하게 모르는데 어떻게 풀까.. 싶긴한데 대충 되나보지하는 감으로 푸는 내 자신이 밉다..
ㅜㅜ 이제 이론 공부도 자세하게 해야겠다..
반응형
'Record > TIL' 카테고리의 다른 글
[Unity] 유니티로 픽셀 이미지(스프라이트) 가져올때 깨지거나 화질구려질때 해결방법 (0) | 2024.07.04 |
---|---|
[C#] Override와 Overload란? (0) | 2024.07.03 |
[C#] static 한정자 (0) | 2024.07.01 |
[Unity] 내가 움직인 방향으로 3D 캐릭터 방향 고정하기 (0) | 2024.06.28 |
[Unity] 스파르타 본사 방문날 (2) | 2024.06.28 |