STUDY(32)
-
[C#] Array vs List vs ArrayList
기본 개념Array연속적인 메모리상에 동일한 타입의 요소를 일렬로 저장하는 자료 구조로서, 배열 요소는 인덱스를 사용하여 직접적으로 접근할 수 있다. 배열은 고정된 크기를 가지며, 배열의 사이즈와 상관없이 한 요소에 접근하는 시간은 인덱스를 사용할 경우 O(1)이 된다. 하지만 인덱스를 알지 못하고 정렬되지 않은 배열에서 값으로 데이터를 찾기 위해서는 O(n)의 시간이 소요된다.List배열요소가 T 타입인 generic로서 동적 배열을 지원하는 클래스이다. list클래스는 내부적으로 배열을 가지고 있으며, 동일한 타입의 데이터를 저장한다. 만약 미리 할당된 배열 크기가 부족하면 내부적으로 배열을 2배로 늘려 동적으로 배열을 확장한다. arrayList와 다르게 박싱 / 언박싱의 문제를 발생하지 않는다.A..
2024.11.12 -
[C#] Class vs Struct
[Class vs Struct]기본 개념classstruct참조 타입으로 힙(heap) 메모리에 할당된다.객체의 참조를 다루므로, 객체를 여러 변수가 공유할 수 있다.C#에서 class는 객체 지향 프로그래밍의 기본 단위로 많이 사용된다.값 타입으로, 주로 스택 메모리에 할당된다. 값 자체를 복사하여 다루므로, struct 변수를 다른 변수에 할당할 때, 별도의 독립된 복사본이 생성된다.C#에서는 작은 데이터 묶음이나 단일 데이터 처리에 주로 사용된다.메모리 할당 방식classstruct힙 메모리에 할당되며, 변수가 객체의 메모리 위치를 참조한다.가비지 컬렉터가 사용되지 않는 객체를 자동으로 해제한다.크기가 큰 데이터를 다루기에 적합하다.주로 스택에 할당되며, 변수에 실제 데이터 값이 저장된다.스택에서 ..
2024.11.06 -
interface는 인스턴스는 못 만들지만 참조는 만들 수 있다?
c#에서 인터페이스는 인스턴스를 만들 수 없지만 참조를 만들 수 있다. 즉, 인터페이스 자체로는 객체를 생성할 수 없지만, 인터페이스를 구현한 클래스의 객체는 인터페이스 타입의 변수를 할당하여 사용할 수 있다는 뜻이다.이를 이해하기 위해 클래스와 인터페이스의 차이를 예제로 설명해보자.public class Dog{ public void Bark() { Console.WriteLine("Woof!"); }}Dog dog = new Dog(); // 클래스의 인스턴스를 생성dog.Bark(); // 출력: Woof!여기서 Dog 클래스는 Bark 메서드를 가지고 있으며, Dog 클래스를 사용해 dog 라는 객체를 만들고 Bark() 메서드를 호출할 수 있다. 즉 Dog 클래스..
2024.10.03 -
어셈블리어에 대한 개념 정리
어셈블리어어셈블리어 : 컴퓨터 언어는 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