본문 바로가기

C#43

구조체를 초기화하는 몇 가지 방법들 C# 에서 구조체를 선언하고 값을 초기화 하는 방법에는 여러 가지가 있습니다.한 가지 방법만 익혀서 사용하면 되지만, 또 다른 방으로 초기화된 코드를 보면 가끔 당황스러울 때가 있습니다.그래서 이 글에서는 구조체를 객체로 만들고 초기화하는 대표적인 방식들을 정리해 보았습니다.또한 구조체 배열, 리스트에서의 초기화 방식까지 함께 다루겠습니다. 구조체 선언먼저 예제로 사용할 Item 구조체를 아래와 같이 정의합니다.struct Item{ public string name; public int price; public string desc;} 1. 객체 선언 후 값을 하나씩 넣기가장 직관적인 방식입니다.객체를 먼저 선언한 후, 각각의 필드에 값을 개별적으로 할당합니다.Item item;ite.. 2025. 6. 3.
접근 제한자가 없는 struct, class 는 public 일까? private 일까? C# 에서 접근 제한자의 기본값 이해하기C# 에서는 클래스나 구조체, 필드 등의 접근 제한자를 명시하지 않으면 컴파일러가 기본값을 적용합니다. 이 기본 접근 제한자는 상황에 따라 달라지며, 이를 정확히 이해하는 것은 코드의 가시성과 캡슐화를 설계하는 데 매우 중요합니다. 클래스와 구조체의 기본 접근 제한자 : internalC# 에서 클래스(class)나 구조체(struct)를 선언할 때 접근 제한자를 따로 명시하지 않으면, 기본적으로 internal 로 간주됩니다.// 기본적으로 internal로 간주됨struct MyStruct { }class MyClass { } 즉, 이런 선언은 해당 타입이 같은 프로젝트 내에서만 접근 가능하다는 뜻입니다. 다른 프로젝트(다른 어셈블리)에서는 접근할 수 없습니다... 2025. 5. 31.
new() 의 완벽한 이해 C# 에서 new() 를 사용하는 이유는 단순해 보입니다.어떤 객체든 new 를 붙이면 메모리에 생겨나고, 바로 사용할 수 있게 됩니다.하지만 이 new() 라는 한 줄의 코드 속엔 두 가지 서로 다른 동작이 숨어 있습니다.첫째는 메모리 공간 확보, 둘째는 초기화(생성자 호출) 입니다.이 둘은 항상 함께 다니기에 한 덩어리처럼 보이지만, 의미적으로는 전혀 다른 역할을 하고 있습니다. new 는 공간만 만든다new 는 단지 메모리를 확보하는 명령어입니다.구조체라면 메모리가 스택에 할당되고, 클래스라면 메모리가 힙에 할당됩니다.즉, new 자체는 그저 “쓸 공간을 마련하라”는 의미일 뿐, 그 공간을 어떤 값으로 채우는지는 new 의 역할이 아닙니다. 초기화는 괄호 () 가 한다우리가 함수를 호출할 때 이름.. 2025. 5. 20.
정렬 알고리즘의 기초 2편 : 선택 정렬 (Selection Sort) 정렬 알고리즘의 두 번째 주제로 소개할 방식은 선택 정렬입니다.버블 정렬과 마찬가지로 단순한 구조를 가지고 있어, 알고리즘 학습 입문자에게 적합한 방식입니다.이번 글에서는 선택 정렬의 작동 원리와 구현 코드, 그리고 이 정렬에 ‘선택’이라는 이름이 붙은 이유를 함께 살펴보겠습니다. 선택 정렬이란?선택 정렬은 아직 정렬되지 않은 부분 중에서 가장 작은 값을 선택하여, 그 값을 앞쪽으로 이동시키는 방식입니다.즉, i번째 자리에 들어갈 값을 배열의 나머지 구간에서 '선택' 해서 자리를 바꾸는 것이 특징입니다.이 과정을 전체 길이만큼 반복하면 오름차순 정렬이 완성됩니다. 작동 방식 요약1. 현재 위치(i)를 기준으로, 그 뒤에 있는 값들 중 가장 작은 값을 찾습니다.2. 그 값의 위치(minIndex)를 기억.. 2025. 5. 4.
정렬 알고리즘의 기초 1편 : 버블 정렬 (Bubble Sort) 정렬 알고리즘은 프로그래밍에서 가장 기본적이고 중요한 주제 중 하나입니다.그중에서도 버블 정렬은 구조가 단순하고 이해하기 쉬워, 알고리즘 학습의 출발점으로 자주 사용됩니다.이번 글에서는 버블 정렬의 작동 방식과 구현 방법, 그리고 왜 ‘버블’이라는 이름이 붙었는지에 대해 소개드립니다. 버블 정렬이란?버블 정렬은 인접한 두 값을 비교하여 큰 값을 뒤로 보내는 방식의 정렬 알고리즘입니다.한 바퀴를 돌고 나면 가장 큰 값이 맨 뒤로 이동하게 되며, 이 과정을 반복함으로써 전체 배열이 정렬됩니다.이러한 과정에서 큰 수가 점점 뒤로 ‘떠오르는’ 모습이 거품(Bubble) 이 물 위로 올라가는 것과 비슷하기 때문에‘버블 정렬(Bubble Sort)’이라는 이름이 붙었습니다. 작동 방식 요약1. 왼쪽부터 인접한 두.. 2025. 5. 4.
C# 에서 temp 없이 값 교환하는 법, 이렇게 간단해도 될까요? C#을 처음 배울 때, 두 변수의 값을 서로 바꾸려면 보통 다음과 같이 작성했습니다.int temp = a;a = b;b = temp; 하지만 C# 7.0부터는 이 과정을 단 한 줄로 처리할 수 있습니다.(a, b) = (b, a); 왜 이렇게 되는 걸까요? 이 문법은 튜플 분해 할당(Tuple Deconstruction) 기능을 이용한 것입니다.• (a, b)는 왼쪽에 위치한 변수 그룹• (b, a)는 오른쪽에 위치한 값 그룹이 둘을 한 쌍으로 묶어 한 번에 할당하기 때문에 가능한 문법입니다.즉, (a, b) = (b, a); 는1. 오른쪽의 (b, a) 튜플을 먼저 평가한 다음2. 각각의 값을 왼쪽의 a, b에 동시에 할당하는 방식입니다. 이 구조 덕분에 temp 와 같은 임시 변수를 사용하지 않아.. 2025. 5. 4.