C#에서는 하나의 switch 문 안에 또 다른 switch 문을 넣어 사용할 수 있습니다. 이를 중첩 switch(nested switch)라고 부르며, 외부(outer) switch의 case 문 시퀀스 내부에 내부(inner) switch를 배치하는 형태로 작성합니다.흥미로운 점은 외부 switch와 내부 switch의 case 상수 값이 서로 같더라도 충돌이 발생하지 않는다는 것입니다. 컴파일러가 각 switch 블록을 독립적으로 처리하기 때문입니다.중첩 switch 문 기본 문법중첩 switch 문의 기본적인 문법 구조는
C# 참조 매개변수란?참조 매개변수(reference parameter)는 변수의 메모리 위치에 대한 참조입니다. 일반적인 값 매개변수(value parameter)와 달리, 매개변수를 참조로 전달하면 해당 매개변수를 위한 새로운 저장 공간이 생성되지 않습니다.즉, 참조 매개변수는 메서드에 전달된 실제 인자와 동일한 메모리 위치를 가리킵니다. 그렇기 때문에 메서드 내부에서 매개변수의 값을 변경하면, 호출부에 있는 원본 변수의 값도 함께 변경됩니다.C#에서는 ref 키워드를 사용하여 참조 매개변수를 선언합니다. 주의할 점은 메서드를
값에 의한 전달(Pass by Value)은 C#에서 메서드에 매개변수를 전달하는 기본 방식입니다. 이 방식에서는 메서드가 호출될 때 각각의 값 매개변수(value parameter)마다 새로운 저장 공간이 생성됩니다.그런 다음 실제 인자(actual argument)의 값이 이 새로운 저장 공간으로 복사됩니다. 따라서 메서드 내부에서 매개변수의 값을 아무리 변경해도 원본 인자에는 아무런 영향을 주지 않습니다.값 전달의 핵심 특징메서드 호출 시 매개변수마다 새로운 메모리 위치가 생성됨원본 값이 복사되어 전달됨메서드 내부의 변경 사항
C#에서 continue 문은 루프 본문의 나머지 부분을 건너뛰고, 다음 반복으로 넘어가기 전에 즉시 조건식을 다시 검사하도록 만드는 제어문입니다.continue 문의 동작 원리continue 문은 break 문과 비슷하게 작동하지만, 결정적인 차이가 있습니다. break 문이 루프를 완전히 종료시키는 반면, continue 문은 루프를 종료하지 않고 중간에 있는 코드들을 건너뛴 채 곧바로 다음 반복(iteration)을 진행합니다.특히 while 루프에서 continue 문이 실행되면 프로그램의 제어 흐름이 곧바로 조건 검사 부분
C# 열거형(enum)이란?C#에서 열거형(enumeration)은 값 형식(value type)에 속하는 데이터 타입으로, 이름이 지정된 정수 상수들의 집합을 의미합니다. 서로 연관된 상수들을 하나의 그룹으로 묶어 관리할 수 있기 때문에 코드의 가독성과 유지보수성이 크게 향상됩니다. 열거형은 enum 키워드를 사용하여 선언합니다.enum 기본 문법열거형을 선언하는 기본 문법은 다음과 같습니다.enum <enum_name> { enumeration list };예를 들어, 차량의 종류를 나타내는 열거형은 다음과 같
C# foreach 문이란?foreach 문은 배열이나 컬렉션의 각 요소에 대해 하나의 문장 또는 여러 문장을 반복 실행할 때 사용하는 반복문입니다.for 문과 비슷한 역할을 하지만, foreach는 배열이나 컬렉션에 포함된 각 요소를 순서대로 자동으로 순회한다는 점이 다릅니다. 따라서 인덱스(index)를 직접 다루지 않아도 되며, 코드가 더 간결하고 가독성이 높아집니다.아래에서는 버블 정렬(Bubble Sort) 예제를 통해 살펴보겠습니다. 배열의 요소들을 정렬한 후, foreach 문을 사용하여 정렬된 결과를 화면에 출력합니다
C#에서 배열을 내림차순으로 정렬하려면 Array.Sort() 메서드와 Array.Reverse() 메서드를 함께 사용하면 됩니다. 먼저 Sort()로 배열을 오름차순 정렬한 뒤, Reverse()로 순서를 뒤집으면 내림차순 배열을 얻을 수 있습니다.1. 정렬되지 않은 배열 준비다음과 같이 정렬되지 않은 정수형 배열이 있다고 가정해 보겠습니다.int[] list = {98, 23, 97, 36, 77};2. Sort() 메서드로 오름차순 정렬Array.Sort() 메서드를 호출하면 배열의 요소가 오름차순으로 정렬됩니다.Array
C#에서는 배열을 메서드의 인수(argument)로 전달할 수 있습니다. 이를 통해 여러 개의 값을 한 번에 함수에 넘기고 처리 결과를 받아올 수 있습니다.배열 선언 및 초기화먼저 다음과 같이 배열을 선언하고 초기화합니다.MyArray app = new MyArray(); /* 5개의 요소를 가진 int 배열 */ int [] balance = new int[]{1000, 2, 3, 17, 50};메서드에 배열 전달하기이제 getAverage() 메서드를 호출하면서 배열을 인수로 전달합니다. 메서드 시그니처는 다음과 같습니다.dou
C#은 다차원 배열(multidimensional array)을 지원합니다. 다차원 배열은 직사각형 배열(rectangular array)이라고도 불리며, 행과 열이 균일한 구조를 가지는 것이 특징입니다.다차원 배열 선언하기2차원 문자열 배열은 다음과 같이 선언할 수 있습니다.string [] names;2차원 배열은 행(row)과 열(column)로 이루어진 표(table) 형태로 생각하면 이해하기 쉽습니다. 즉, x개의 행과 y개의 열을 가진 데이터 구조라고 볼 수 있습니다.다차원 배열 초기화하기다차원 배열은 각 행에 해당하는
C#에서 중첩된 if 문(nested if statement)이란 하나의 if 또는 else if 문 안에 또 다른 if 또는 else if 문을 포함시키는 구조를 말합니다. 이 방식은 여러 조건을 순차적으로 검사해야 할 때 유용하며, 바깥쪽 조건이 참일 때만 안쪽 조건을 확인하게 됩니다.중첩 if 문의 기본 문법중첩 if 문의 기본적인 작성 형식은 다음과 같습니다.if( boolean_expression 1) { /* boolean_expression 1이 참일 때 실행됨 */ if(boolean_expression 2
C#에서 2차원 배열을 정렬하려면 중첩된 for 루프 안에 비교용 for 루프를 하나 더 추가하여 인접한 요소들을 조건에 따라 검사하고 교환하는 방식(버블 정렬)을 사용할 수 있습니다.정렬 로직의 핵심 코드아래 코드는 각 행(row) 내에서 이웃한 두 요소를 비교하여, 앞의 값이 뒤의 값보다 크면 서로 자리를 바꾸는 버블 정렬 방식입니다.for (int k = 0; k < j; k++) { if (arr[i, k] > arr[i, k + 1]) {  
가변 배열(Jagged Array)은 배열의 배열을 의미합니다. 일반적인 2차원 배열과 달리 각 행(내부 배열)의 길이가 서로 다를 수 있어, 크기가 들쭉날쭉한 데이터 구조를 표현할 때 유용하게 사용됩니다.C#에서 int 타입의 가변 배열 scores는 다음과 같이 선언할 수 있습니다.int[][] scores;가변 배열의 특징각 내부 배열은 독립적으로 초기화되며, 길이가 달라도 됩니다.선언 시 외부 배열만 먼저 생성하고, 나중에 각 내부 배열을 따로 할당할 수도 있습니다.메모리를 더 유연하게 사용할 수 있어, 행마다 데이터 크기가
C#의 foreach 문은 배열의 모든 요소를 인덱스 없이 순차적으로 읽을 수 있는 가장 간결한 반복문입니다. 별도의 카운터 변수나 종료 조건 없이도 컬렉션 전체를 안전하게 순회할 수 있어 코드 가독성이 높아지고 실수도 줄어듭니다. 아래 예제에서는 먼저 for 문으로 정수 배열을 초기화한 뒤, foreach 문을 사용해 각 요소의 값을 출력합니다. 예제 using System; namespace ArrayApplication { class MyArray { static void Main(string[] args)
C# #line 지시문이란?#line 지시문을 사용하면 컴파일러가 오류(error)와 경고(warning)를 보고할 때 출력하는 줄 번호와, 선택적으로 파일 이름까지 변경할 수 있습니다.주로 코드 생성기나 전처리 도구가 자동으로 소스를 생성할 때, 실제 원본 파일 기준의 줄 번호를 표시하고 싶은 경우에 유용하게 활용됩니다.#line 지시문 기본 예제먼저 간단한 예제를 살펴보겠습니다.#line 100 demoint a; // 100번째 줄에서 CS0168 발생int b; // 101번째 줄에서 CS0168 발생int c;
C#에서 break 문은 현재 실행 중인 루프를 즉시 종료하고, 프로그램의 흐름을 루프 바로 다음에 위치한 문장으로 넘기는 역할을 합니다.루프 내부 어디에서든 break 문이 실행되면 해당 루프는 그 순간 중단되며, 이후의 반복은 더 이상 수행되지 않습니다. 대신 프로그램 제어가 루프 외부의 다음 문장으로 이동하여 계속 진행됩니다.break 문의 기본 동작while 루프 안에서 특정 조건을 만족했을 때 반복을 강제로 멈추고 싶다면, if 문과 함께 break 문을 사용하면 됩니다. 아래 코드 조각은 변수 a가 15보다 커지는 순간
확장 메서드(Extension Method)는 정적(static) 메서드이지만, 마치 해당 타입의 인스턴스 메서드인 것처럼 호출할 수 있는 특별한 메서드입니다.확장 메서드를 활용하면 새로운 파생 클래스를 만들거나, 원본 타입을 다시 컴파일하거나 수정하지 않고도 기존 타입에 새로운 메서드를 손쉽게 추가할 수 있습니다.확장 메서드 작성 방법다음은 문자열을 정수로 변환하는 확장 메서드 예제입니다. 첫 번째 매개변수 앞에 this 키워드를 붙이면 해당 타입에 대한 확장 메서드가 됩니다.public static int myExtensionM
MAC 주소란 무엇인가?MAC 주소(Media Access Control Address)는 네트워크에 연결된 장치에 할당되는 고유 식별자입니다. 각 네트워크 인터페이스 카드(NIC)마다 고유한 MAC 주소가 부여되어 있으며, 이를 통해 네트워크 상에서 장치를 정확하게 구분할 수 있습니다.MAC 주소 기술은 이더넷(Ethernet), 블루투스(Bluetooth), 파이버 채널(Fibre Channel) 등 다양한 통신 기술에서 폭넓게 활용되고 있습니다.C#에서 MAC 주소를 추출하는 방법C#에서는 NetworkInterface.Get
C#에서 두 리스트(List)의 교집합, 즉 공통 요소를 찾고 싶다면 Intersect() 메서드를 사용하는 것이 가장 간단하고 효율적인 방법입니다. Intersect()는 LINQ에서 제공하는 집합 연산 메서드로, 두 컬렉션에 모두 존재하는 요소만 추출해 줍니다.예제 리스트 살펴보기먼저 교집합을 구할 두 개의 정수형 리스트를 만들어 보겠습니다.첫 번째 리스트List<int> list1 = new List<int>(); list1.Add(2); list1.Add(3); list1.Add(5); list1.Add
문자열에서 가장 많이 발생하는 문자란 다른 어떤 문자보다 더 자주 나타나는 문자를 의미합니다. 다음 예시를 통해 쉽게 이해할 수 있습니다.문자열: apples are red 위 문자열에서 가장 많이 발생하는 문자는 e로, 3번 나타나며 다른 어떤 문자보다 발생 빈도가 높습니다.C#을 사용하여 문자열에서 가장 많이 발생하는 문자를 구하는 프로그램은 다음과 같습니다.예제 코드using System; namespace charCountDemo { public class Example { &nbs
선택 정렬(Selection Sort)이란? 선택 정렬은 루프가 반복될 때마다 배열에서 최솟값을 찾아내고, 그 값을 현재 위치의 요소와 교환(swap)하는 방식으로 동작하는 정렬 알고리즘입니다. 이 과정을 배열 전체가 정렬될 때까지 반복하면 오름차순으로 정렬된 결과를 얻을 수 있습니다. 선택 정렬은 구현이 매우 간단하고 직관적이어서 정렬 알고리즘을 처음 배울 때 자주 활용되며, 시간 복잡도는 데이터 개수와 관계없이 항상 O(n²)입니다. C# 선택 정렬 예제 코드 다음은 C#으로 작성한 선택 정렬 프로그램의 전체 코드입니다. usi