회문(Palindrome)은 앞에서부터 읽어도 뒤에서부터 읽어도 동일한 문자열을 의미합니다. 예를 들어 Madam, Noon, Level처럼 글자 순서를 거꾸로 해도 같게 읽히는 문자열이 여기에 해당합니다.C#에서 문자열이 회문인지 확인하는 가장 기본적인 방법은 문자열을 뒤집은 뒤 원본과 비교하는 것입니다. 두 값이 일치하면 그 문자열은 회문입니다.회문 확인 절차먼저 Array.Reverse() 메서드로 문자열의 역순을 구하고, Equals() 메서드를 사용해 원본 문자열과 뒤집힌 문자열을 비교합니다. 비교 결과가 true라면 해당
팩토리얼(Factorial, 계승)은 어떤 수부터 1까지의 모든 정수를 곱한 값으로, n! 형태로 표기합니다. 이 글에서는 C#에서 재귀 함수를 사용해 팩토리얼을 계산하는 방법을 단계별로 살펴보겠습니다.재귀의 기본 원리재귀란 함수가 자기 자신을 다시 호출하는 프로그래밍 기법입니다. 아래 예제에서는 checkFact()라는 재귀 함수를 통해 팩토리얼 값을 구합니다.먼저 입력값이 1이면 팩토리얼 값도 1이므로 그대로 1을 반환하며 재귀 호출을 종료합니다. 이것이 재귀 함수의 종료 조건(base case)입니다.if (n == 1)
C# as 연산자란?C#의 as 연산자는 서로 호환되는 형식(compatible types) 간의 변환을 수행하는 연산자입니다. 일반적인 캐스트(cast) 연산과 비슷하게 동작하지만, 참조 변환(reference conversion), nullable 변환, 박싱(boxing) 변환 세 가지만 지원한다는 점이 특징입니다.따라서 사용자 정의 변환(user-defined conversion)과 같은 그 외의 변환은 as 연산자로 처리할 수 없으며, 이런 경우에는 반드시 캐스트 식(cast expression)을 사용해야 합니다.as 연
C# is 연산자란?C#의 is 연산자는 객체의 런타임 타입이 특정 타입과 호환되는지 여부를 확인하는 데 사용됩니다. 즉, 해당 객체가 지정한 타입으로 안전하게 변환(캐스팅)될 수 있는지를 검사하고, 그 결과를 true 또는 false 불리언 값으로 반환합니다.기본 문법expr is type여기서 expr은 검사할 표현식(expression)이며, type은 호환성을 확인하려는 타입의 이름입니다.is 연산자 사용 예제다음 예제는 is 연산자를 활용해 전달받은 객체가 어떤 클래스에 속하는지 확인하고, 조건에 따라 적절히 캐스팅하는 과
숫자가 2로 나누어 떨어지는지 확인하려면 먼저 나머지를 구해야 합니다. 어떤 수를 2로 나눴을 때 나머지가 0이라면, 그 수는 2로 나누어 떨어진다고 할 수 있습니다.예를 들어 숫자가 10이라고 가정해 보겠습니다. 이 경우 다음과 같이 if-else 문을 사용하여 확인할 수 있습니다.// 숫자가 2로 나누어 떨어지는지 확인 if (num % 2 == 0) { Console.WriteLine(Divisible by 2); } else { Console.WriteLine(Not divisibl
소수(Prime Number)란 1과 자기 자신만을 약수로 가지는 1보다 큰 자연수를 말합니다. 이 글에서는 C#의 반복문과 조건문을 활용하여 주어진 숫자가 소수인지 판별하는 프로그램을 작성하는 방법을 알아보겠습니다. 소수 판별의 기본 원리 핵심 아이디어는 간단합니다. 1부터 해당 숫자 n까지 차례대로 나누어 보면서, 나머지가 0이 되는 경우(즉, 약수를 찾은 경우)마다 카운터 값을 하나씩 증가시키는 것입니다. for (int i = 1; i <= n; i++) { if (n %
C#에서 Thread.Sleep 메서드는 스레드를 지정된 시간 동안 일시 중지(대기)시키는 데 사용됩니다. 멀티스레딩 환경에서 작업 간의 타이밍을 조절하거나 특정 프로세스가 완료되기를 기다려야 할 때 유용하게 활용할 수 있습니다.Thread.Sleep 기본 사용법스레드를 몇 초간 대기시키고 싶다면 밀리초 단위의 값을 인자로 전달하면 됩니다. 예를 들어 2초간 스레드를 중지하려면 다음과 같이 코드를 작성합니다.int sleepfor = 2000; // 2000밀리초 = 2초 Thread.Sleep(sleepfor);전체 예제 코드아래
C# 오른쪽 시프트(>>) 연산자란?C#의 오른쪽 시프트 연산자(>>)는 비트 조작(bit manipulation)에 사용되는 기본 연산자 중 하나입니다. 이 연산자는 왼쪽 피연산자(operand)의 값을, 오른쪽 피연산자가 지정한 비트 수만큼 오른쪽으로 이동시킵니다.비트가 오른쪽으로 이동할 때마다 값은 사실상 2로 나누어지는 효과가 있습니다. 예를 들어, 2비트를 오른쪽으로 시프트하면 원래 값의 1/4이 됩니다.오른쪽 시프트 연산자 예제 코드다음은 C#에서 오른쪽 시프트 연산자를 사용하는 간단한 예제입니다.u
C#의 Stack(스택) 클래스는 객체를 후입선출(LIFO, Last-In First-Out) 방식으로 저장하는 컬렉션입니다. 즉, 가장 나중에 추가된 요소가 가장 먼저 제거되는 구조로, 책을 쌓아 올린 더미처럼 맨 위에 있는 항목부터 꺼내야 하는 상황에 적합합니다.Stack 클래스의 주요 메서드Stack 클래스에서 자주 사용되는 메서드는 다음과 같습니다.번호메서드 및 설명1public virtual void Clear();스택에 있는 모든 요소를 제거합니다.2public virtual bool Contains(object obj)
C#에서 인터페이스(Interface)는 속성(property), 메서드(method), 이벤트(event) 등을 멤버로 정의하는 일종의 계약서 역할을 합니다. 중요한 점은 인터페이스가 멤버에 대한 선언만 포함한다는 것입니다. 실제 구현은 인터페이스를 상속받는 클래스(파생 클래스)의 책임이며, 이를 통해 파생 클래스들이 반드시 따라야 할 표준 구조를 제공할 수 있습니다.인터페이스 이름은 관례상 대문자 I로 시작하며(예: ITransactions), 이를 통해 개발자가 코드만 보고도 인터페이스임을 쉽게 식별할 수 있습니다.인터페이스
C# 배열 반복의 기본 개념 C#에서 배열을 순회하려면 다양한 반복문을 활용할 수 있습니다. 각 반복문은 시작 값과 종료 값을 설정할 수 있어, 반복 과정에서 배열의 값을 설정하거나 조건을 검사하는 데 유용합니다. C#에서 배열 반복에 사용할 수 있는 반복문은 while, do...while, for, foreach 네 가지입니다. 그중 가장 널리 쓰이는 for 루프 예제부터 살펴보겠습니다. for 루프를 사용한 배열 반복 예제 using System; namespace ArrayApplication { class MyA
C#에서 배열을 다루다 보면 여러 배열을 하나로 합치거나, 배열의 요소들을 하나의 문자열로 연결해야 하는 경우가 자주 발생합니다. 이 글에서는 string.Join() 메서드를 사용해 배열 요소를 문자열로 연결하는 기본 방법과, LINQ의 Concat()을 활용해 두 개의 배열을 실제로 하나의 배열로 병합하는 방법까지 함께 살펴보겠습니다. 1. string.Join()으로 배열 요소 연결하기 먼저 문자열 배열을 선언하고 초기화합니다. string[] str = new string[] { Hello, World }; 이제 strin
C# 특성(Attribute)이란 무엇인가?특성(Attribute)은 프로그램에 메타데이터를 추가하기 위해 사용됩니다. 여기에는 컴파일러 지시문뿐만 아니라 주석, 설명, 메서드, 클래스와 같은 다양한 정보가 포함될 수 있습니다..NET Framework는 선언적 정보를 저장하고 런타임 시 이를 검색할 수 있는 사용자 지정 특성(Custom Attribute)의 생성을 지원합니다. 새로운 사용자 지정 특성을 만들려면 System.Attribute 클래스를 상속받아야 합니다.AttributeUsage로 적용 대상 지정하기사용자 지정 특
C#에서 프로그램의 실행 흐름은 제어문(control statement)에 의해 결정됩니다. 제어문을 활용하면 조건에 따라 코드를 분기하거나 특정 블록을 반복 실행할 수 있어, 보다 유연하고 효율적인 프로그램을 작성할 수 있습니다. C#의 대표적인 제어문은 다음과 같습니다.if 문if 문은 불리언(Boolean) 표현식을 평가한 후, 그 결과가 참(true)일 때 하나 이상의 문장을 실행하는 조건문입니다.기본 문법은 다음과 같습니다.if(boolean_expression) { /* 불리언 표현식이 참일 때 실행되는 문장 */
의사 결정문(decision-making statement)은 프로그램이 평가하거나 검사할 하나 이상의 조건을 프로그래머가 지정하도록 하는 구문입니다. 지정한 조건이 참(true)으로 판단되면 해당 문장이 실행되고, 필요하다면 조건이 거짓(false)일 때 실행할 다른 문장들도 추가로 지정할 수 있습니다. C#에서 제공하는 대표적인 의사 결정문은 아래 표와 같습니다. 번호구문 및 설명 1if문불리언(Boolean) 표현식 뒤에 하나 이상의 문장이 따라오는 형태로, 조건이 참일 때만 해당 문장들이 실행됩니다. 2if...els
C# 델리게이트(Delegate)란 무엇인가?C#에서 델리게이트(delegate)는 메서드에 대한 참조를 담는 특별한 형식입니다. 쉽게 말해, 델리게이트는 메서드의 주소를 저장하는 참조 형식 변수라고 할 수 있으며, 런타임에 참조하는 메서드를 자유롭게 변경할 수 있다는 점이 큰 특징입니다.델리게이트는 특히 이벤트(event)와 콜백(callback) 메서드를 구현할 때 널리 사용됩니다. 또한 모든 델리게이트는 암묵적으로 System.Delegate 클래스로부터 파생됩니다.델리게이트 선언 방법C#에서 델리게이트를 선언하는 기본 문법은
사용자 지정 예외란?다른 프로그래밍 언어와 마찬가지로 C#에서도 개발자가 직접 정의한 예외를 손쉽게 만들 수 있습니다. 이렇게 만든 예외를 사용자 지정 예외(User-defined Exception), 즉 커스텀 예외라고 부르며, 사용자 지정 예외 클래스는 반드시 Exception 클래스를 상속받아 작성해야 합니다.사용자 지정 예외를 활용하면 애플리케이션의 비즈니스 로직에 맞는 의미 있는 오류 메시지를 전달할 수 있어, 코드의 가독성과 유지보수성이 크게 향상됩니다.아래 예제에서 사용된 TempIsZeroException은 C#에 내
정규식(Regular Expression)은 입력 텍스트와 비교해 일치 여부를 검사할 수 있는 패턴을 의미합니다. .NET 프레임워크는 이러한 패턴 매칭을 수행할 수 있는 강력한 정규식 엔진을 내장하고 있어, 별도의 외부 라이브러리 없이 문자열 검색·치환·분할 작업을 손쉽게 처리할 수 있습니다.하나의 패턴은 하나 이상의 문자 리터럴, 연산자, 또는 구문(constructor)으로 구성됩니다. 예를 들어 S로 시작하는 단어를 찾고 싶다면 다음과 같이 C#의 정규식을 활용할 수 있습니다.예제 코드using System; using Sy
C#에서 소멸자(Destructor)는 클래스에 속한 특수한 멤버 함수로, 해당 클래스의 객체가 범위를 벗어나 소멸될 때 자동으로 실행되는 메서드입니다. 주로 객체가 사용하던 리소스를 정리하는 용도로 활용됩니다.소멸자의 기본 문법소멸자는 클래스 이름 앞에 물결표(~)를 붙여 정의합니다. 예를 들어 클래스 이름이 Demo라면 소멸자는 ~Demo() 형태가 됩니다.public Demo() { // 생성자 Console.WriteLine(객체가 생성되고 있습니다); } ~Demo() { // 소
C#에서 매개변수가 있는 메서드를 호출할 때는 인수(argument)를 메서드에 전달해야 합니다. 매개변수를 전달하는 방법은 크게 세 가지로 나눌 수 있으며, 각 방식에 따라 메서드 내부의 변경 사항이 원본 변수에 미치는 영향이 달라집니다.값 매개변수(Value Parameters)값 매개변수 방식은 인수의 실제 값을 함수의 형식 매개변수에 복사합니다. 따라서 함수 내부에서 매개변수를 아무리 변경해도 원본 인수에는 영향을 주지 않습니다.메서드가 호출되면 각 값 매개변수마다 새로운 저장 위치가 생성되고, 실제 매개변수의 값이 그곳으로