C \ # 범 형 초식 2

6314 단어 C#
. Net 플랫폼 의 가장 기본 적 인 용 기 는 System. Array 류 입 니 다.C \ # 배열 은 고정된 상한 선의 같은 유형의 항목 (System. Object 의 배열 을 포함 하여 본질 적 으로 모든 유형의 배열 을 표시 합 니 다) 을 정의 할 수 있 습 니 다.일반적으로 이것 은 우리 의 요 구 를 만족 시 킬 수 있 지만 우 리 는 더욱 유연 한 데이터 구 조 를 필요 로 한다. 예 를 들 어 동적 성장 과 수축 용기 나 용 기 는 특정한 조건 에 부합 되 는 대상 만 저장 할 수 있다.
. NET 플랫폼 이 처음 발 표 된 이후 프로그래머 들 은 System. collections 네 임 스페이스 를 사용 하여 더욱 유연 한 방식 으로 데 이 터 를 관리 하 였 으 나. net 2.0 이 발 표 된 후부 터 C \ # 프로 그래 밍 언어 가 강화 되 어 범 형 (글자 뜻 통용 유형) 을 지원 하기 시작 했다.이 를 바탕 으로 기본 라 이브 러 리 에 집합 을 중심 으로 하 는 새로운 네 임 스페이스 를 도입 했다. System. collections. Generic 네 임 스페이스
범 형의 용 기 는 그들의 비 범 형 버 전에 비해 여러 가지 측면 에서 훨씬 우수 하 다. 왜냐하면 그들 은 더 많은 유형의 안전 과 성능 우 위 를 제공 하기 때문이다.따라서 강조 할 필요 가 있다. NET 2.0 또는 더 높 은 버 전 으로 만 든 프로젝트 는 System. collections 의 클래스 를 사용 하 는 것 을 포기 하고 System. collections. Generic 의 클래스 를 사용 해 야 한다.
1. List < T > 클래스 사용
범 형 유형 이나 방법 정의 에서 유형 매개 변 수 는 클 라 이언 트 가 범 형 유형의 변 수 를 예화 할 때 지정 한 특정한 유형의 자리 표시 자 입 니 다.클 라 이언 트 코드 는 괄호 안에 있 는 형식 매개 변 수 를 지정 하여 구조 유형 을 설명 하고 예화 해 야 합 니 다. 이 특정한 유형의 매개 변 수 는 컴 파일 러 가 식별 하 는 모든 유형 일 수 있다. 임의의 수의 구조 유형 인 스 턴 스 를 만 들 수 있 습 니 다. 모든 인 스 턴 스 는 서로 다른 유형 인 자 를 사용 합 니 다. 다음 과 같 습 니 다.
GenericList<float> list1 = new GenericList<float>();

GenericList<ExampleClass> list2 = new GenericList<ExampleClass>();

GenericList<ExampleStruct> list3 = new GenericList<ExampleStruct>();

각각 GenericList 실례 에서 클래스 에 나타 난 모든 T 실행 할 때 해당 하 는 형식 매개 변수 로 대 체 됩 니 다. 이러한 교체 방식 을 통 해 우 리 는 하나의 클래스 정 의 를 사용 하여 세 개의 독립 된 유형의 안전 한 유효한 대상 을 만 들 었 다.
일반 클래스 를 사용자 정의 하고 실례 화 합 니 다. 다음 과 같 습 니 다.
class Program

{

        static void Main(string[] args)

        {

            int obj = 2;

            Test<int> test = new Test<int>(obj);

            Console.WriteLine("int:" + test.obj);

            string obj2 = "hello world";

            Test<string> test1 = new Test<string>(obj2);

            Console.WriteLine("String:" + test1.obj);

            Console.Read();

        }

}





class Test<T>

{

    public T obj;

    public Test(T obj)

    {

          this.obj = obj;

     }

}

Test 는 사용자 정의 클래스 나 구조 입 니 다. 이 코드 세 션 은 a List < > of T, T 는 Test 형식 으로 읽 을 수 있 습 니 다.더 간단 하 다 Test 대상 목록 입 니 다.
2. 일반적인 방법
일반적인 방법 은 유형 매개 변 수 를 사용 하여 설명 하 는 방법 으로 다음 과 같다.
static void Swap<T>(ref T lhs, ref T rhs)

{

    T temp;

    temp = lhs;

    lhs = rhs;

    rhs = temp;

}

다음 코드 예제 에서 사용 을 보 여 줍 니 다. int 형식 매개 변수 로 호출 하 는 방법:
public static void TestSwap()

{

    int a = 1;

    int b = 2;



    Swap<int>(ref a, ref b);

    System.Console.WriteLine(a + " " + b);

}

형식 매개 변 수 를 생략 할 수도 있 고 컴 파일 러 는 이 매개 변 수 를 추정 할 것 이다. 아래 Swap 의 호출 은 앞의 호출 과 같다.
Swap(ref a, ref b);

같은 유형의 추리 규칙 도 정적 방법 과 실례 방법 에 적용 된다. 컴 파일 러 는 들 어 오 는 방법 에 따라 유형 형 삼 을 실제 적 으로 추정 할 수 있다.그것 은 제약 이나 반환 값 으로 만 형식 형 삼 을 추정 할 수 없다. 따라서 유형 추 리 는 매개 변수 가 없 는 방법 에 적용 되 지 않 는 다. 형식 추 리 는 컴 파일 할 때 컴 파일 러 가 재 업로드 방법 을 해석 하고 서명 하기 전에 진행 합 니 다. 컴 파일 러 는 같은 이름 을 공유 하 는 모든 일반적인 방법 에 유형 추리 논 리 를 적용 한다. 재 업로드 분석 절차 에서 컴 파일 러 는 유형 추리 가 성공 한 일반적인 방법 만 포함한다.
범 형 류 에서 비 범 형 방법 은 클래스 등급 유형 매개 변 수 를 방문 할 수 있 습 니 다. 다음 과 같 습 니 다.
class SampleClass<T>

{

    void Swap(ref T lhs, ref T rhs) { }

}

좋은 웹페이지 즐겨찾기