C# 범용 구속의 깊은 이해
1. 인터페이스 제약.예를 들어, 일반 클래스 MyGenericClass를 선언하면 유형 매개변수 T가 IComparable 인터페이스를 구현할 수 있습니다.
public class MyGenericClass where T:IComparable { }
2. 기본 클래스 제약: 특정한 유형이 지정한 클래스를 기본 클래스(또는 이 클래스 자체)로 해야 이 일반 유형의 유형 매개 변수로 사용할 수 있음을 지적한다.
이러한 구속을 사용하려면 유형 매개변수의 다른 모든 구속 앞에 나타나야 합니다.
class MyClassy
where T : class
where U : struct
{
}
3.where 자구는 구조 함수 제약도 포함할 수 있다.new 연산자를 사용하여 형식 매개 변수의 실례를 만들 수 있습니다.그러나 형식 매개 변수는 구조 함수 제약 new () 의 제약을 받아야 합니다.새 () 제약은 컴파일러에게 알 수 있습니다. 제공하는 모든 종류의 매개 변수는 접근 가능한 무매개 변수 (또는 기본) 구조 함수를 가져야 합니다.예를 들면 다음과 같습니다.
public class MyGenericClass where T: IComparable, new()
{
// The following line is not possible without new() constraint:
T item = new T();
}
new () 제약은where 자구의 마지막에 나타납니다.
4. 여러 유형의 매개 변수에 대해 각 유형의 매개 변수는 다음과 같은 where 자문을 사용합니다.
interface MyI { }
class Dictionary
where TKey: IComparable, IEnumerable
where TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}
5. 일반 방법의 유형 매개변수에 구속을 첨부할 수도 있습니다. 예를 들어,
public bool MyMethod(T t) where T : IMyInterface { }
위임과 메소드 둘 다에서 유형 매개변수 구속을 설명하는 구문은 동일합니다.
delegate T MyDelegate() where T : new()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.