Latest web development tutorials

C # 제네릭 (일반)

일반 (일반)은 실제로 프로그램을 사용하는 시간이 될 때까지 사용자가 상기 사양의 클래스 또는 메소드 프로그래밍 요소의 데이터 유형의 제조를 지연시킬 수있다.즉, 어떤 데이터 유형으로 작업 할 수 있습니다 일반적인 클래스 나 메소드를 작성 할 수 있습니다.

당신은 매개 변수의 데이터 유형을 대체하여 사양 클래스 나 메소드를 작성할 수 있습니다. 함수는 생성자 메소드 호출 또는 컴파일러는 특정 데이터 타입을 처리하기위한 코드를 생성하는 클래스가 발생하면. 다음의 간단한 예제는이 개념을 이해하는 데 도움이 될 것입니다 :

시스템을 이용하여;
System.Collections.Generic을 사용함;

네임 스페이스 GenericApplication
{
    공용 클래스 MyGenericArray <T>
    {
        개인 T [] 배열;
        공공 MyGenericArray (INT 크기)
        {
            배열 = 새로운 T [크기 + 1];
        }
        공공 T의 getItem (INT 지수)
        {
            배열 [인덱스]를 반환;
        }
        공공 무효 setItem (INT 지수, T 값)
        {
            배열 [인덱스] 값을 =;
        }
    }
           
    클래스 테스터
    {
        정적 무효 메인 (문자열 []에 인수)
        {
            // 정수 배열 MyGenericArray를 <INT> intArray = 새로운 MyGenericArray <INT> 선언 (5);
            의 값을 설정 // (; 다 <5; INT C = 0 C ++)
            {
                intArray.setItem (C, C * 5);
            }
            가치를 얻기 // (; 다 <5; INT C = 0 C ++)
            {
                Console.Write (intArray.getItem (c) + "");
            }
            Console.WriteLine ();
            // 문자 배열 MyGenericArray을 <문자> charArray = 새로운 MyGenericArray <문자> 선언 (5);
            의 값을 설정 // (; 다 <5; INT C = 0 C ++)
            {
                charArray.setItem (C, (문자) (C + 97));
            }
            가치를 얻기 // (; 다 <5; INT C = 0 C ++)
            {
                Console.Write (charArray.getItem (c) + "");
            }
            Console.WriteLine ();
            Console.ReadKey ();
        }
    }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

05101520
ABCDE

일반 (일반) 기능

범용의 사용은 구체적으로 다음과 같은 측면에서 기술 능력을 강화하는 프로그램이다 :

  • 그것은 당신이 코드 재사용, 안전 보호 및 개선 성능의 유형을 극대화 할 수 있습니다.
  • 당신은 일반 컬렉션 클래스를 만들 수 있습니다. .NET Framework 클래스 라이브러리는System.Collections.Generic 네임스페이스의 몇 가지 새로운 제네릭 컬렉션 클래스가 포함되어 있습니다.대신은 System.Collections 컬렉션클래스 이러한 제네릭 컬렉션 클래스를 사용할 수 있습니다.
  • 당신은 당신의 자신의 일반적인 인터페이스, 일반적인 클래스, 일반적인 방법 일반 이벤트 및 일반 대리자를 만들 수 있습니다.
  • 당신은 특정 데이터 형식에 액세스 할 수 제네릭 클래스를 제한 할 수 있습니다.
  • 정보의 유형에 대한 일반적인 사용되는 데이터 유형을 반영하여 실행 시간에 얻을 수있다.

일반 (일반) 방법

위의 예에서, 우리는 제네릭 클래스를 사용하여, 우리는 일반적인 방법 유형 매개 변수를 선언 할 수 있습니다. 다음 프로그램은이 개념을 설명합니다 :

시스템을 이용하여;
System.Collections.Generic을 사용함;

네임 스페이스 GenericMethodAppl
{
    클래스 프로그램
    {
        정적 무효 스왑 <T> (참고 T의 좌, 심판 T의 우)
        {
            T 온도;
            온도 = 좌;
            좌 = 우;
            우 = 임시;
        }
        정적 무효 메인 (문자열 []에 인수)
        {
            A, B를 int로;
            숯불 C, D;
            A = 10;
            B = 20;
            C = 'I';
            d 개 = 'V';

            // ( "지능 값 스왑을 호출하기 전에 :")를 교환 가치 Console.WriteLine을하기 전에 디스플레이;
            Console.WriteLine ( "A = {0}, B = {1},"A, B);
            Console.WriteLine ( "char 값 스왑을 호출하기 전에 :");
            Console.WriteLine ( "C = {0}, D = {1} ', C, D);

            // 통화 스왑
            스왑 <INT> (심판 B, A를 심판);
            스왑 <문자> (심판 C, 심판 D);

            // 표시 값 Console.WriteLine을 교환 한 후 ( "스왑을 호출 한 후 지능 값 :");
            Console.WriteLine ( "A = {0}, B = {1},"A, B);
            Console.WriteLine ( "char 값 스왑을 호출 한 후 :");
            Console.WriteLine ( "C = {0}, D = {1} ', C, D);
            Console.ReadKey ();
        }
    }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

통화 스왑 전에 INT 값 :
A = 10, B = 20
통화 스왑 전에 문자 값 :
C = I, D = V
스왑을 호출 한 후 INT 값 :
A = 20, B = 10
스왑을 호출 한 후 숯불 값 :
C = V, D = I

의뢰 일반 (일반)

당신은 제네릭 대리자 형식 매개 변수를 통해 정의 할 수 있습니다. 예를 들면 :

위임 T NumberChanger <T> (T n을);

다음의 예는위원회의 사용을 보여줍니다 :

시스템을 이용하여;
System.Collections.Generic을 사용함;

위임 T NumberChanger <T> (T n을);
네임 스페이스 GenericDelegateAppl
{
    클래스 TestDelegate
    {
        정적 INT의 납입 = 10;
        공공 정적 INT ADDNUM (INT 페이지)
        {
            NUM + = 피;
            NUM을 반환;
        }

        공공 정적 INT MultNum (INT Q)
        {
            NUM * = Q;
            NUM을 반환;
        }
        공공 정적 INT getNum ()
        {
            NUM을 반환;
        }

        정적 무효 메인 (문자열 []에 인수)
        {
            // 대리자 인스턴스 NumberChanger <INT> NC1 = 새로운 NumberChanger <INT> (ADDNUM) 만들기;
            NumberChanger <INT> NC2 = 새로운 NumberChanger <INT> (MultNum);
            // 대리자 개체 NC1 (25)를 사용하여 메서드를 호출;
            Console.WriteLine ( "민의 값 : {0}", getNum ());
            NC2 (5);
            Console.WriteLine ( "민의 값 : {0}", getNum ());
            Console.ReadKey ();
        }
    }
}

상기 코드는 컴파일되고 실행될 때, 다음과 같은 결과를

민의 값 : 35
민의 값 : 175