C#의 where 일반 구속조건 소개

2422 단어
범형 제약의 뜻은 클래스의 범형은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();
     }
 }

이상의 코드 실행 결과:

좋은 웹페이지 즐겨찾기