C\#의 where 범 형 제약 소개
///
///
///
public interface INationality
{
string Nationality
{
set;
get;
}
string GetNationality();
}
그 다음 에 이 인 터 페 이 스 는 두 가지 실현 이 있 습 니 다.다음 과 같 습 니 다.
///
///
///
public class Chinese : INationality
{
private string _Nationality;
public string Nationality
{
set
{
_Nationality = value;
}
}
public string GetNationality()
{
return string.IsNullOrEmpty(_Nationality) ? "Default." : _Nationality;
}
}
///
///
///
public class American : INationality
{
private string _Nationality;
public string Nationality
{
set { _Nationality = value; }
}
public string GetNationality()
{
return string.IsNullOrEmpty(_Nationality) ? "Default." : _Nationality;
}
}
그 다음 에 범 형 류 를 만 들 고 범 형 제약 을 가 진 류 를 만 듭 니 다.다음 과 같 습 니 다.
///
///
///
///
public class PrintNationality where T : INationality, new()
{
T item = new T();
public void Print()
{
Console.WriteLine(string.Format("Nationality:{0}", item.GetNationality()));
}
}
where 자구 의 범 형 제약 이 있 기 때문에 PrintNationality 대상 을 만 들 때 T 의 유형 은 서브 INationality 인 터 페 이 스 를 계승 하 는 류 일 수 밖 에 없습니다.
public class Program
{
static void Main(string[] args)
{
PrintNationality _c = new PrintNationality();
PrintNationality _a = new PrintNationality();
//PrintNationality _o = new PrintNationality(); , INationality
_c.Print();
_a.Print();
Console.ReadKey();
}
}
이상 의 코드 실행 결과: