-
스파르타코딩클럽 종합게임개발 Unity_3기 17일차카테고리 없음 2024. 1. 16. 23:08
안녕하세요 여러분들!! 요즘들어 시간이 너무 빨리가는거같아용! 무언가에 집중하면 시간이 금방가는거 같아용!
군대에 있을때는 시간이 그렇게 안갔는데 말이죵! 역시 사람은 좋아하는 일을 해야하는것 같아용! 힘들어도 힘이 나거나 일이 즐거우면 스트레스도 덜 받고 아! 즐거운거랑 힘든거랑은 다른거 아시죵?! 아무튼! 오늘 배운것들을 알려드리자면요! 바로바로 제너릭(Generic) 입니다!! 제너릭은 C#에서 제공하는 기능으로 코드의 재사용성과 유연성을 올려주는 도구입니다!! 데이터 형식을 일반화하여 재사용을 가능하게하며 다향한 형식의 데이터를 터리하느 메서드와 클래스를 작성해 컴파일을 안정적으로 보장해준다!!! 제너릭을 사용할때는 여러 데이터 형식에 대해 동일한 로직을 사용해야할때 라던가 컬렉션 타입으로 여러 데이터 형식을 저장하고 관리할때 데이터 타입에따라 다른 연산을 해야할때 등등 입니당!
***잊지 말아야할 오늘 배운거***
static void Main(string[] args) { int[] Number = { 1, 2, 3, 4, 5 }; ArrayIntConsole(Number); } static void ArrayIntConsole(int[] Number) { for (int i = 0; i < Number.Length; i++) { Console.WriteLine(Number[i]); } }보통은 함수에 매개변수 타입을 정해놓고 받아옵니다 그래서 string 타입을 보내줄려면 매개변수가 string타입의 함수를 또 만들어줘야하죠! 하지만 저희에겐 제너릭(Generic) 이라는게 있다는점! 이것을 이용한다면!
static void Main(string[] args) { int[] Number = { 1, 2, 3, 4, 5 }; string[] String = { "1", "2", "3", "4", "5" }; ArrayTConsole(Number); ArrayTConsole(String); } static void ArrayTConsole<T>(T[] values) { for(int i = 0;i < values.Length; i++) { Console.WriteLine(values[i]); } }이런식으로 int타입 string타입 둘다 매개변수로 가져올수있다는점!! 이것이 가능한 이유는 제너릭에 사용하는 자료형은 선언 시점이 아닌 사용시점에 결정되기 때문입니다! 참고로 <T> 는 T말고 다른글자를 써도 상관없습니당!
static void TConsole<T1, T2>(T1 value1, T2 value2) { Console.WriteLine("value1"); Console.WriteLine("value2"); }제너릭은 이런식으로 두개를 선언해줄수도 있습니다 제너릭은 메서드뿐만 아니라 클래스도 할수있습니다!
class List<T> { private T[] elements; private int count; public List() { elements = new T[10]; count = 0; } public void Add(T element) { elements[count] = element; count++; } public T Get(int index) { return elements[index]; } } static void Main(string[] args) { List<int> intList = new List<int>(); intList.Add(1); intList.Add(2); Console.WriteLine(intList.Get(0)); // 1 List<string> stringList = new List<string>(); stringList.Add("AAA"); stringList.Add("BBB"); Console.WriteLine(stringList.Get(1)); // BBB }클래스 이름쪽에 <T>는 형식 매개변수라고 합니당 제네렉 클래스는 객체 생성 시에 그 멤버의 형이 결정 됩니당!
이로 인해 형이 다르다고 클래스를 또 하나 만들필요가 없는거죠!!
(오늘의 명언"오늘은 지나면 다시오지 않는다")