분류 전체보기(143)
-
[C#] Find() vs FirstOrDefault()
C#에서 Find와 FirstOrDefault 메서드는 컬렉션에서 특정 조건을 만족하는 요소를 검색하는 데 사용됩니다. 그러나 이 두 메서드는 서로 다른 성능 특성을 가지고 있으며 사용 시 고려해야 할 사항이 있습니다. List.Find 메서드: List 클래스에서 사용할 수 있으며, 리스트에서 첫 번째로 조건을 만족하는 요소를 검색합니다. 선형 검색을 수행하며, 리스트의 처음부터 끝까지 요소를 하나씩 확인합니다. 성능은 리스트의 크기에 비례하므로 대규모 리스트에서는 성능 저하가 있을 수 있습니다. Enumerable.FirstOrDefault 메서드: IEnumerable 인터페이스를 구현하는 모든 컬렉션에서 사용할 수 있습니다. 조건을 만족하는 첫 번째 요소를 검색하며, 내부적으로 반복자를 사용하여 ..
2023.09.05 -
.Any()
IEnumerable를 구현하는 일반적인 컬렉션: 대부분의 컬렉션, 예를 들어 리스트(List), 배열(T[]) 등은 IEnumerable를 구현합니다. 이러한 컬렉션에서 Any 메서드는 컬렉션의 각 요소를 순차적으로 확인하면서 조건을 만족하는 요소를 찾으면 검색을 중지하고 true를 반환합니다. 이 경우, 선형 검색이 수행됩니다. ICollection를 구현하는 컬렉션: 일부 컬렉션, 예를 들어 HashSet, Dictionary 등은 ICollection를 구현하며, 이 인터페이스는 Count 속성을 가지고 있습니다. 이러한 컬렉션에서 Any 메서드는 컬렉션의 Count 속성을 확인하여 요소의 존재 여부를 결정합니다. 따라서 실제로 모든 요소를 순차적으로 확인하지 않고도 빠르게 true 또는 fals..
2023.09.05 -
[Unity] Unity의 enabled, isActiveAndEnabled 및 activeInHierarchy의 차이점
https://stackoverflow.com/questions/40708014/difference-between-enabled-isactiveandenabled-and-activeinhierarchy-in-unity
2023.05.11 -
[Unity] 현재 실행중인 애니메이터의 길이를 구하는 방법 GetCurrentAnimatorStateInfo
현재 실행 중인 애니메이터의 길이를 얻으려면 Animator 컴포넌트의 GetCurrentAnimatorStateInfo 메서드를 사용하여 현재 상태 정보를 가져와야 합니다. 이 메서드는 현재 애니메이터 상태에 대한 정보를 반환합니다. 다음은 C# 코드의 예입니다. Animator animator = GetComponent(); AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); float length = stateInfo.length; 이 코드에서 animator 변수는 현재 게임 오브젝트에서 Animator 컴포넌트를 가져오기 위해 사용되고, GetCurrentAnimatorStateInfo 메서드는 현재 애니메이터 상태에 대..
2023.02.22 -
[C#] List.Clear() vs List = null
clear와 null 대입은 그 의미가 다릅니다. clear는 다음에 그 객체를 재사용할 수 있다는 의미가 되고요, null대입은 그 List 자체를 날리겠다는 의미니깐요. List 안에 3000개를 넣었다면 C++로 치자면 vector에 reserve(3000); resize(3000); 을 호출해 준 상황과 유사한 메모리 상태라고 생각됩니다. 여기에 null대입을 하면 GC는 List가 확보하고 있는 메모리와, 그 안의 구성요소 모두를 GC 대상으로 설정하겠죠. Clear를 호출한 경우라면 reserve(3000)은 남아있는 상태에서 capacity는 변동이 없을겁니다. 안의 구성요소들은 GC대상으로 설정될 수 있겠네요. 뿐만 아니라 GC는 즉각적이지 않습니다. 따라서 Clear뒤에 바로 null대입..
2023.01.30 -
[C#] ToList(), List를 ToList() 한다?
ToList() ToList() 자체가 쉽게 생각한다면 리스트로 만든다로 이해할 수 있다. 예를 들어 array -> list로 변경하고자 할때 등. 그런데 이미 타입이 List인 녀석도 ToList()를 할 수 가 있다. 이게 왜 필요한가 싶었는데 최근에 궁금증이 해결되었다. GetFilter().SetOriginItemList(_curList); GetFilter().Apply(ref _curList); GetSorter().Apply(ref _curList); 만약 위와 같은 코드가 있고, 이 위에서 _curList를 하나 만들었다고 가정해보자. SetOriginItemList()는 필터를 아무것도 하지 않았을 상태의 모든 아이템의 리스트를 저장하는 OriginItemList를 만든다고 가정하고 A..
2023.01.06