Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- base()
- 배열
- 프로퍼티와 생성자
- 분할 클래스
- 프로퍼티
- 자동구현프로퍼티
- is
- 인덱서
- 형식변환
- 인터페이스 상속
- 클래스
- 추상 프로퍼티
- 컬렉션 초기화
- System.Array
- c#
- 클래스 연습문제
- 이것이C#이다
- 가변배열
- 오버라이딩
- 무명형식
- 배열초기화
- 메소드숨기기
- 일반화 클래스
- 접근 한정자
- this 키워드
- 중첩클래스
- 인터페이스 예제
- 인터페이스의 프로퍼티
- as
- 튜플
Archives
- Today
- Total
제로의영역
11.1 일반화 프로그래밍 & 11.2 일반화 메소드 본문
* 본 블로그 글은 머리가 아~~~주 나쁜 왕X100초보가 프로그래밍을 공부하면서 정리를 위해 작성하는 글입니다. 잘못 정리되거나 제가 잘못 이해한 글은 이해 및 조언 부탁드립니다.
* 공부는 '이것이 C#이다' 책을 보고 하고 있습니다. 참고로 저같은 왕초보가 보기 어렵게 써져 있어서 별도의 정리 문서를 만들게 되었습니다.
11.1 일반화 프로그래밍
1. 일반화 프로그래밍의 정의: 특수한 개념으로부터 공통된 개념을 찾아 묶는 것
2. 일반화 방법: 일반화하는 대상을 '데이터 형식(int, float .. 등)' 을 통해 일반화 함.
11.2 일반화 메소드
1.일반화 메소드 정의: (데이터 형식을) 일반화한 메소드
2. 사용방법
한정자 반환형식 메소드이름 <형식 매개 변수> (매개변수 목록)
{
...
}
3. 사용 예
// int 버전
void CopyArray( int[] source, int[] target)
{
for(int i=0;i< source.Length; i++)
traget[i]=source[i];
}
//string 버전
void CopyArray( string[] source, string[] target)
{
for(int i=0;i< source.Length; i++)
traget[i]=source[i];
}
//기타 형식 등등 버전
//....
위의 예제에서 보듯이 같은 메소드를 데이터 형식에 따라 따로 구현해야 함.
이를 '일반화' 를 통해 아래 예제와 같이 사용 가능함
void CapyArray<T>(T[] source, T[] target)
{
for(int i=0; i< source.Length; i++)
target[i]=source[i];
}
<T>를 메소드 이름 과 매개변수 목록 사이에 추가해주고 매개변수 앞에 T를 붙여주면 다른 데이터 형식이어도 하나의 메소드로 활용하여 사용할 수 있음.
<T>를 형식 매개 변수라고 함.
원하는 데이터를 호출 할 때는 아래의 방식으로 호출합니다.
int[] source={1,2,3,4,5};
int[] target=new int[source.Length];
CopyArray<int>(source, target); //형식 매개 변수 T에 int를 대입
foreach(int element in target)
Console.WriteLine(element);
위 예제처럼 형식 매개 변수에 부르고 싶은 데이터 형식을 넣어 원하는 데이터를 호출 할 수 있습니다.
예제)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _10._11._1
{
class Program
{
static void CopyArray<T>(T[] source, T[] target)
{
for (int i = 0; i < source.Length; i++)
target[i] = source[i];
}
static void Main(string[] args)
{
int[] source = { 1, 2, 3, 4, 5 };
int[] target = new int[source.Length];
CopyArray<int>(source, target);
foreach (int element in target)
Console.WriteLine(element);
string[] source2 = { "하나", "둘", "셋", "넷", "다섯" };
string[] target2 = new string[source2.Length];
CopyArray<string>(source2, target2);
foreach (string element in target2)
Console.WriteLine(element);
}
}
}
실행결과
1
2
3
4
5
하나
둘
셋
넷
다섯
하나의 일반화 메소드를 통해 int형식과 string형식을 호출 할 수 있음.
'C#' 카테고리의 다른 글
11.3 일반화 클래스 (0) | 2019.12.30 |
---|---|
10.10 foreach가 가능한 객체 만들기 (0) | 2019.12.26 |
10.9 인덱서 (0) | 2019.11.18 |
10.8 컬렉션을 초기화하는 방법 (0) | 2019.09.19 |
10.6 가변 배열 (0) | 2019.08.09 |