C# Study/C# 케이스 스터디 맨텀 2021. 4. 26. 15:01
기본생성자의 호출 순서 B가 A를 상속받을 때, B를 생성할 경우 부모의 생성자가 먼저 호출된다. 상속이 여러단계면 부모부터 자식까지 순서대로 호출된다. public class TestScript : MonoBehaviour { [Button] public void Test() { var Temp = new B(); } } public class A { public A() { Debug.Log("A"); } } public class B : A { public B() { Debug.Log("B"); } } 매개변수가 있는 경우 이번에는 string을 매개변수로 받는 생성자를 각각 만들어 준 뒤, 매개변수로 B를 생성해본다. 부모의 기본생성자가 호출되고, 자식의 오버로드된 생성자가 호출된다. public ..
C# Study/C# 케이스 스터디 맨텀 2021. 4. 23. 17:01
1. 반복 데이터 채우기 같은 값으로 컬렉션을 채워야하는 경우도 존재한다. 이때 사용할 수 있는 것이 Enumerable.Repeat msdn : Enumerable.Repeat(TResult, Int32) https://docs.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.repeat?view=net-5.0 첫 번째 인자는 반복할 값 (여기서는 숫자를 사용하였지만, 제네릭 객체이다) 두 번째 인자는 반복할 횟수 (int) int[] myArray = Enumerable.Repeat(-1, 10).ToArray(); 혹은 LINQ를 사용하지 않는 Array.Fill() 메서드도 존재한다. int[] myArray = new int[10]; Array.F..
C# Study/C# 케이스 스터디 맨텀 2020. 7. 13. 18:38
MS 프로그래밍 가이드 : 인덱서 사용 https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/indexers/using-indexers # 무엇인가요 간단히 말해서 클래스 내부에 있는 특정 값들을 배열처럼 접근 가능하게 해준다. 프로퍼티와 많은 부분에서 유사. 구문을 간소화하여 클래스와 해당 용도를 다른 개발자가 이해하기 쉽게 만든다. # 사용 방법 아래와 같이 this 키워드를 사용하여 구현. public int this[int index] // Indexer declaration { // get and set accessors } 프로퍼티와 비슷하게 Get과 Set을 사용한다. set은 제한적으로 사용하길 바람. public float t..
C# Study/C# 케이스 스터디 맨텀 2019. 12. 15. 21:48
Dictionary에 담은 원소들을 한개씩 삭제해가면서 삭제가 성공하면 다른 리스트에 담는 방식을 구현해야하는 경우가 있다. public Dictionary temporalItemDic; public void InventoryFinalize() { foreach (var item in temporalItemDic) { if (temporalItemDic.Remove(item.Key)) AddItem(item.Key, item.Value); } } 하지만, 위와 같은 enumeration에서 원소삭제는 Exception오류를 일으킨다! 이런 문제 때문에 리스트 등에서는 for문으로 맨 뒤에서부터 체크해야한다. for (int i = monsterList.Count - 1; i >= 0; i--) { if ..
C# Study/C# 케이스 스터디 맨텀 2019. 12. 13. 23:51
마이크로소프트 params(C# 참조) https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/params # 인자를 여러개 보내고 싶다 public int Sum(int a, int b) { return a + b; } public int Sum(int a, int b, int c) { return a + b + c; } ...... 인자가 정해져 있지 않은경우 여러개의 숫자를 합치는 함수를 위와 같이 구현해 볼 수 있을 것이다. 좋지않다. 결국에는 같은 내용인데 반복적으로 만들 뿐이다. 여기서 필요한게 params 이다. # 인수의 갯수가 정해지지 않은 경우의 초기화 매개변수의 형식 앞에 params를 붙여주면 가변 개수의..
C# Study/C# 케이스 스터디 맨텀 2019. 12. 12. 23:52
문제점 생성자를 이용하여 초기화할 때, 직접 초기화하고 싶지 않은 값들이 있다. 선택적 매개 변수를 사용하면 어떨까? 선택적 매개변수를 사용한다면 다음과 같은 형식이 된다. public StatModifier(float value, StatModType type, int order = 1, object source = null) { Value = value; Type = type; Order = order; Source = source; } 하지만 선택적 매개변수는 모든 필수 매개변수 다음에 와야한다는 규칙이 있기 때문에 유연하지 못하다. 생성자 오버로딩! 생성자를 오버로딩해서 만들어두면, 입력받은 매개변수로 다른매개변수를 할당하는 등 꽤나 유연한 생성이 가능하다. public class StatModi..