공통된 코드를 사용하고, 타입만 달라질 경우 사용

1. 일반적인 클래스 사용 (int, string)

// int id, string name
using System;

namespace Example
{
	public class Student
	{
		public int id {get; set;}
		public string name {get; set;}
		public Student(int id, string name)
		{
			this.id = id;
			this.name = name;
		}
		public int getId()
		{
			return this.id;
		}
		public string getName()
		{
			return this.name;
		}		
	}
    		
	public class Program
	{				
		// execute
		public static void Main(string[] args)
		{
			Student st = new Student(10, "John");
			Console.WriteLine(st.getName() + "'s ID is " + st.getId());
		}
	}
}

2. 일반적인 코드 사용(string id, string name) 그런데 타입만 달라진다.

// string id, string name
using System;

namespace Example
{
	public class Student
	{
		public string id {get; set;}
		public string name {get; set;}
		public Student(string id, string name)
		{
			this.id = id;
			this.name = name;
		}
		public string getId()
		{
			return this.id;
		}
		public string getName()
		{
			return this.name;
		}		
	}
    		
	public class Program
	{				
		// execute
		public static void Main(string[] args)
		{
			Student st = new Student("ten", "John");
			Console.WriteLine(st.getName() + "'s ID is " + st.getId());
		}
	}
}	

3. 코드의 낭비를 없애기 위해 제너릭 사용

  : 클래스 선언시 이름 옆에 <T>, 타입이 들어가는 자리에 T 표기

  : 사용시에는 클래스 이름옆에 <타입> 넣어준다

// 제네릭 T : 한개의 변수 사용예정, string id, string name
using System;

namespace Example
{
	public class Student<T>
	{
		public T id {get; set;}
		public T name {get; set;}
		public Student(T id, T name)
		{
			this.id = id;
			this.name = name;
		}
		public T getId()
		{
			return this.id;
		}
		public T getName()
		{
			return this.name;
		}		
	}
    		
	public class Program
	{				
		// execute
		public static void Main(string[] args)
		{
			Student<string> st = new Student<string>("ten", "John");
			Console.WriteLine(st.getName() + "'s ID is " + st.getId());
		}
	}
}	

4. 제네릭 2개의 변수 사용

// 제네릭 T,S 사용
using System;

namespace Example
{
	public class Student<T, S>
	{
		public T id {get; set;}
		public S name {get; set;}
		public Student(T id, S name)
		{
			this.id = id;
			this.name = name;
		}
		public T getId()
		{
			return this.id;
		}
		public S getName()
		{
			return this.name;
		}		
	}
    		
	public class Program
	{				
		// execute
		public static void Main(string[] args)
		{
			Student<int, string> st = new Student<int, string>(10, "John");
			Console.WriteLine(st.getName() + "'s ID is " + st.getId());
		}
	}
}	

'ASP.NET C#' 카테고리의 다른 글

String Manipulation  (0) 2021.01.29
yield, paraller, dynamic  (0) 2021.01.21
Delegate, Action, Func  (0) 2021.01.19
Members => Property(프로퍼티)  (0) 2021.01.16
enum(열거형)  (0) 2021.01.15

+ Recent posts