개발/C#

# 제네릭 클래스

노마드 2021. 1. 24. 12:44

 

제네릭을 통해 어떤 타입도 받아들일 수 있는 

클래스, 메서드 등을 만들 수 있다.

 

 

 

using System;

namespace ConsoleApp8

{

  class Program

  {

    static void Main(string[] args)

    {

      Calc<int> program = new Calc<int>(50);

      Console.WriteLine(program.value);

      Calc<string> program1 = new Calc<string>("hello C#");

      Console.WriteLine(program1.value);

      Calc<double> program2 = new Calc<double>(1.5);

      Console.WriteLine(program2.value);

      Console.ReadLine();

    }

  }

  class Calc<T>                        // 제네릭 클래스

  {

    public T value;

    public Calc(T value)

    {

      this.value = value;

    }

  }

  class Calc1<T> where T : struct      // T는 값 타입

  { }

  class Calc2<T> where T : class       // T는 참조 타입

  { }

  class Calc3<T> where T : Program     // T는 Program 클래스의 파생 클래스여야한다.

  { }

  class Calc4<T> where T : ICloneable  // T는 ICloneable 인터페이스를 구현하는 타입이어야한다.

  { }

}