블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

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

Category

Recent Post

Recent Comment

Archive

2009. 8. 18. 09:33 .Net Project/.Net C#
반응형
 Generic Class란 ??
제네릭 클래스는 특정 데이터 형식에 고유하지 않은 작업을 캡슐화합니다. 제네릭 클래스는 연결된 목록(linked list), 해시 테이블, 스택, 큐, 트리 등 컬렉션에서 항목을 추가하고 제거하는 등의 작업이 저장되는 데이터의 형식과 관계없이 동일한 방식으로 수행되는 컬렉션에 가장 일반적으로 사용됩니다.

제네릭 클래스는 비가변적입니다. 즉, 입력 매개 변수에서 List<BaseClass>를 지정하면 List<DerivedClass>를 제공하려고 할 때 컴파일 타임 오류가 발생하게 됩니다
형식 매개 변수와 제약 조건에 대한 규칙은 제네릭 클래스 동작에서 특히 상속과 멤버
액세스 가능성에 대해 몇 가지 영향을 줍니다.

계속하려면 몇 가지 용어를 이해하고 있어야 합니다.
Node<T>, 제네릭 클래스의 경우 클라이언트 코드에서는 형식 인수를 지정하여 폐쇄형
생성 형식(Node<int>)을 만드는 방법으로 클래스를 참조하거나, 제네릭 기본 클래스를 지정하는 경우와 같이 형식 매개 변수를 지정하지 않고 개방형 생성 형식(Node<T>)을 만드는 방법으로 클래스를 참조할 수 있습니다.

제네릭 클래스는 구체적인 클래스, 폐쇄형 구성 클래스 또는 개방형 구성

기본 클래스에서 상속할 수 있습니다.

 Program.Cs

using System;
//using System.Collections.Generic;

public class 제네릭클래스
{
    public static void Main()
    {
        //기본클래스메서드 호출
        //Hello h = new Hello();
        //h.SayInt(1234); h.SayStr("안녕"); h.SayObj(DateTime.Now);
        Hello<int> hi = new Hello<int>(); hi.Say(1234);
       
        //hi.Say 정수형으로 받고 할경우 
        Hello<string> hs = new Hello<string>(); hs.Say("안녕"); 
       
        //매개변수가 있는 생성자 만들어서 사용하는 경우
        Hello<string> say = new Hello<string>("반갑습니다.");
        say.Say(); //생성자 호출
        say.SayType(); //생성자 호출
    }
}

Hello Class Generic 타입 생성 

//제닉클래스를 사용하고 할 경우(원하는 모든값을 전달 받아 사용 가능)
public class Hello<T>
{
    private T msg;

    //public Hello() { msg = default(T); }
    // 매개없는 생성자와 같은 방식으로 전달하여 사용 가능 

   
    public Hello() { } //매개변수 없는 생성자 
   
    //매개변수가 있는 생성자 만들어서 사용하는 경우
    public Hello(T msg)  {this.msg = msg;}
    public void Say() { Console.WriteLine("{0}", this.msg); }

    public void Say(T msg) { Console.WriteLine("{0}",msg); }

    public void SayType() {
        T temp;
        temp = default (T) ; //drfault 기본값을 초기화 해주기 위해 사용
        Console.WriteLine("{0}", temp);
    }
    //가장 일반적으로 사용하고 있는 예제이다
    //public void SayInt(int msg) {Console.WriteLine("{0}", msg); }
    //public void SayStr(string msg) {Console.WriteLine("{0}",msg); }
    //public void SayObj(object msg) {Console.WriteLine("{0}",msg); }

}

Generic Class관련하여 더 자세한 사항은 참고 바람)

 http://msdn.microsoft.com/ko-kr/library/sz6zd40f.aspx


반응형
posted by Magic_kit