C# Study/C# 케이스 스터디 맨텀 2019. 12. 12. 23:14
Readonly는 한번 값을 할당하면 바꿀 수 없게 만들어준다. 하지만 List의 경우는 리스트 그 자체를 바꿀 순 없지만, 들어있는 값을 Add, Remove 하는 것은 가능하다. 따라서 프로퍼티처럼 사용되는 것이 ReadOnlyCollection 이다. 할당할 때에는 ReadOnlyCollection = 원본.AsReadOnly(); 와 같은 형태로 넣어준다. using System.Collections.ObjectModel; public class CharacterStat { private readonly List statModifers; public readonly ReadOnlyCollection StatModifers; public CharacterStat(float baseValue) { S..
C# Study/C# 케이스 스터디 맨텀 2019. 12. 12. 14:26
#. 문제는 무엇인가? 버튼을 배열로 선언해놓고 for문에서 AddListener로 할당하려고 했는데, 모두 마지막 값으로 초기화되는 현상이 있었다. for (int i = 0; i PressBtnSelectGame(i)); } 이렇게 작성하면 0, 1, 2 .. 순서대로 초기화 되지 않는다! #. Closure Problem 람다식이 실제 실행 되기 전에는 내부 변수를 참조형태로 가지고 있다. for문을 돌리면서 같은 변수인 i를 계속 줬기 때문에 마지막 값으로 통일된 것. 이를 Closure problem이라고 부른다. 자세한 내용은 다음의 링크를 참고하자. https://stackoverflow.co..
C# Study/C# 케이스 스터디 맨텀 2019. 12. 10. 00:31
LINQ의 OrderBy 이외에도, List 에서는 기본 제공하는 Sort 라는 메소드가 존재함. public void TEST() { statModifers.Sort(CompareOrder); } private int CompareOrder(StatModifier a, StatModifier b) { if (a.Order b.Order) return 1; return 0; } Sort 속에는 Comparison이 될 수 있는 메소드가 들어가야한다. statModifers.Sort(delegate (StatModifier a, StatModifier b) { if (a.Order < b.Order) return -1; else if..
C# Study/C# 케이스 스터디 맨텀 2019. 10. 2. 11:01
C# 프로그래밍 가이드 : 확장메서드 https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/extension-methods 확장 메서드는 특수한 종류의 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출됩니다. 호출하려는 클래스를 첫번째 파라미터로 넣고 그 앞에 this를 추가하는 것으로 선언 가능하다. ( 선언은 A에서 하지만 B가 호출 가능한 함수가 만들어진다! ) 유니티에서 오브젝트 끄고 켤 때는 보통 null 체크를 같이 해주고 있다. // 명시적 널 체크 if (MyObject != null) MyObject.SetActive(true); // 간단하게 쓰는 버전. 하지만 명시적인 것을 선..
C# Study/C# 케이스 스터디 맨텀 2019. 9. 7. 16:21
https://bananamandoo.tistory.com/30 https://slaner.tistory.com/92 http://www.dreamy.pe.kr/zbxe/CodeClip/157656 일반적으로 변수를 string으로 바꿀때는 변수.ToString(); 를 사용한다. 여기에 추가적으로 표기형식을 정의해 줄 수 있다. 괄호사이에 표기형식을 "" 를 감싸서 넣어주면 된다. 변수.ToString("N0"); F : 실수 F0 : 소수점 없이 표기 1234 F1 : 소수점 한자리 1234.5 F2 : 소수점 두자리 1234.56 ... N : 자릿수를 표기하는 실수 N0 : 소수점 없이 표시 + 천단위마다 , 표기 1,234 N1 : 소수점 한자리 + 천단위마다 , 표기 1,234.5 N2 : 소..
C# Study/C# 케이스 스터디 맨텀 2019. 7. 7. 23:07
배열의 초기화 # 길이 20인 배열 초기화 int[] IntArray = new int[20]; 리스트 초기화 # 길이 20인 리스트 초기화 List IntList = new List(new int[20]); - 정석적인 방법은 for문을 돌려서 Add를 20번하는 것이다. - 위 방법은 20짜리 길이의 배열을 하나 더 만들고 이를 생성용으로만 사용하는 방식이라 메모리를 낭비한다. - 같은 값을 넣기 위해서는 어차피 for문을 이용해야 하니 초기값으로 만들경우에만 사용할 것. - LINQ의 array.ToList();를 사용할 수도 있다. # 요소로 초기화 List testNums = new List() { 7, 7, 7, 7 } ; # LINQ를 활용하기 - 값을 5로 채운 길이 10의 리스트 초기화 ..