분류 전체보기(144)
-
어셈블리어에 대한 개념 정리
어셈블리어어셈블리어 : 컴퓨터 언어는 0과 1로 구성된 기계어이다. 이를 사람이 이해하긴 어렵다. 예를 들어 '01001100 00001000 10000001 10010000' 같은 기계어 명령어를 어셈블리어에서는 'MOV'라고 하면 된다. 물론 컴퓨터는 'MOV' 라는 명령어를 전혀 이해하지 못한다. 컴퓨터는 0과 1만 알아듣기 때문이다. 그래서 이 어셈블리어는 일종의 번역 과정을 거쳐 컴퓨터가 이해하는 기계어 코드로 변환되는데, 이것을 컴파일 이라고 한다. 프로그래머가 어셈블리어로 프로그램 코드를 작성한 후 컴파일러라는 소프트웨어를 이용하여 실행 파일을 만들어내는데, 이 실행 파일이 바로 프로그램이다. 어셈블리어처럼 프로그램을 작성하기 위해 만들어진 인공 언어 체계를 '프로그래밍 언어'라고 한다...
2024.09.28 -
[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