C\#범용 클래스(함수)의 실례 화 예시

1622 단어 범 형 류함수.
범 형 은 클래스 에 도 사용 할 수 있 고 함수 에 도 사용 할 수 있다....와 같다
범 형 류:

public class MyClass<T>
{
    public T MyElement { get; set; }
}
범 형 함수:

public T ReturnElement<T>()
{
    throw new NotImplementedException();
}
그러나 MyElement 를 예화 해 야 할 때 new()를 사용 할 수 없습니다.다음 코드 만 추가 하면 예화 할 수 있 습 니 다.
범 형 류:

public class MyClass<T> where T: new()
{
    public T MyElement { get; set; }

    public MyClass()
    {
        this.MyElement = new T();
    }
}

범 형 함수:

public T ReturnElement<T>() where T : new()
{
    return new T();
}
여기 서 where 는 실제 범 형 유형 T 에 대한 한정 또는 보충 입 니 다.만약 에 T 가 int 의 집합 이 기 를 원한 다 면 이 집합 은 List일 수도 있 고 HashSet일 수도 있 습 니 다.만약 에 이들 이 모두 ICollection 에서 물 려 받 은 것 이 라면 유형 T 에 대한 제한 을 추가 할 수 있 습 니 다.또한 이것 이 실례 화 될 수 있 도록 해 야 합 니 다.

public T ReturnElement<T>()
    where T : ICollection<int>, new()
{
    return new T();
}
한 걸음 더 나 아가 집합 중의 요소 의 유형 을 완화 하고 싶다 면 예 를 들 어 int 라면double 등 비교 가능 한 유형 은 모두 IComparable 에서 물 려 받 은 것 이 므 로 다음 과 같은 제한 을 계속 추가 할 수 있 습 니 다.

public T ReturnElement<T, S>()
    where T : ICollection<S>, new()
    where S : IComparable
{
    return new T();
}
C\#의 범 형 유형 은 매우 편리 한 메커니즘 을 제공 하여 매우 편리 하 게 하 나 를 보면 열 을 안다.

좋은 웹페이지 즐겨찾기