나는 MvcContrib 그리드에 대한 소스 코드를 찾고 있어요와 클래스로 선언 참조 :클래스 선언에서 키워드 "where"는 무엇을합니까?
public class Grid<T> : IGrid<T> where T : class
where T : class
비트가 무엇입니까?
나는 MvcContrib 그리드에 대한 소스 코드를 찾고 있어요와 클래스로 선언 참조 :클래스 선언에서 키워드 "where"는 무엇을합니까?
public class Grid<T> : IGrid<T> where T : class
where T : class
비트가 무엇입니까?
이 경우 제네릭 형식 (T
)은 참조 형식, 즉 클래스, 인터페이스, 대리인 또는 배열 형식이어야 함을 의미합니다.
기타 제약 조건은 here입니다.
또한 특정 유형 (기본 클래스 또는 인터페이스)
T는 a reference type, including any class, interface, delegate, or array type가 될 그것은 제한에서 상속 할 수있는 일반적인 유형을 제한 할 수 있습니다. 워드 프로세서
http://msdn.microsoft.com/en-us/library/d5x73970.aspx
여기서 T : 클래스
type 인수는 참조 형식이어야합니다 이것은 모든 클래스, 인터페이스, 델리게이트 또는 배열 유형에도 적용됩니다.
또 다른 예는 AnInterface
는 인터페이스 클래스이다
public A<T> where T : AnInterface
될 것이다. 즉, T
이이 인터페이스를 구현해야한다는 것을 의미합니다.
이러한 제한 조건은 컴파일러가 유형에 유효한 연산을 알 수 있도록하는 데 중요합니다. 예를 들어 어떤 함수가 어떤 함수를 제공하는지 컴파일러에 알리지 않고 T
의 함수를 호출 할 수 없습니다.
T는 클래스 또는 인터페이스이지만 열거 형 또는 구조체가 될 수 없다는 형식 인수에 대한 제한 조건입니다. 따라서 T는 값 유형이 아닌 참조 유형이어야합니다.
최고 감사합니다,
올리버 Hanappi
예로 불리는 클라이언트 코드가이 클래스의 인스턴스를 형식 인수에 사용할 수있는 유형의 종류에 제한을 적용 할 수 있습니다
: T : 클래스
여기에서 T
은 유형입니다. 유형 인수는 참조 유형이어야합니다. 이것은 모든 클래스, 인터페이스, 델리게이트 또는 배열 유형에도 적용됩니다.
제네릭 형식 제약 조건입니다. 유형 T
이 참조 유형 (예 : 구조가 아닌 클래스)이어야한다는 것을 지정합니다.
가능한 복제본 http://stackoverflow.com/questions/221687/can-you-use-where-toquire-an-attribute-in-c –
@Jon Seigel - 분명히 그 질문의 중복이 아닙니다. – Oded