C#/C# Common

Generics

doublerabbits 2022. 9. 4. 20:29

Generics

  • 형식 인수를 생략하고 컴파일러에서 자동으로 유추하도록 한다.

 

using System;

namespace Generics
{
    class Program
    {
        static void Main(string[] args)
        {
            var r1 = new Result<int, string> { Success = true, Data = 5, Data2 = "Hello" };
            var r2 = new Result<string, bool> { Success = true, Data = "John", Data2 = true };

            Console.WriteLine(r1.ToString());
            Console.WriteLine(r2.ToString());
            
            Console.WriteLine();

            var helper = new ResultPrinter();
            helper.Print(r1);
            helper.Print(r2);

            Console.ReadKey();
        }
    }

    public class Result<T,U>
    {
        public bool Success { get; set; }
        public T Data { get; set; }
        public U Data2 { get; set; }

        public override string ToString()
        {
            return $"{Success}, {Data}, {Data2}";
        }
    }

    public class ResultPrinter
    {
        public void Print<T,U>(Result<T,U> result)
        {
            Console.WriteLine(result.Success);
            Console.WriteLine(result.Data);
            Console.WriteLine(result.Data2);
        }
    }
}