C\#의 where 범 형 제약 소개

범 형 제약 이란 클래스 의 범 형 은 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();
     }
 }
이상 의 코드 실행 결과:

좋은 웹페이지 즐겨찾기