핵심 차이점C#에서 Write()와 WriteLine() 메서드의 가장 큰 차이점은 줄 바꿈 문자(new line character)의 포함 여부입니다.Write() 메서드는 출력 내용을 화면에 표시하지만 줄 바꿈 문자를 추가하지 않습니다. 따라서 다음 출력이 같은 줄에 이어서 나타나게 됩니다.WriteLine() 메서드는 출력 내용을 표시한 후 문자열 끝에 줄 바꿈 문자를 추가합니다. 이로 인해 다음 출력은 자동으로 새로운 줄에서 시작됩니다.예제다음 예제를 통해 두 메서드의 동작 차이를 직접 확인해 보겠습니다.using Syste
스택(Stack)이란? C#에서 스택(Stack)은 Push(삽입)와 Pop(삭제) 연산을 통해 구현되는 대표적인 자료구조입니다. 스택은 객체를 LIFO(Last-In, First-Out, 후입선출) 방식으로 관리하는 컬렉션으로, 가장 마지막에 추가된 요소가 가장 먼저 제거됩니다. C#에서 스택을 사용하려면 System.Collections 네임스페이스에 포함된 Stack 클래스를 활용하면 됩니다. Stack 클래스의 주요 메서드 번호메서드 및 설명 1public virtual void Clear();스택에서 모든 요소를 제거
C#에서 난수(random number)를 생성하려면 Random 클래스가 제공하는 Next(minValue, maxValue) 메서드를 사용합니다. 이 메서드는 두 개의 매개변수를 받아, 지정한 범위 내에서 임의의 정수를 반환합니다.Next() 메서드의 매개변수minValue: 생성할 난수의 최솟값 (이 값 포함)maxValue: 생성할 난수의 최댓값 (이 값은 제외됨)예를 들어 100 이상 200 미만의 난수를 생성하고 싶다면 다음과 같이 작성합니다.Next(100, 200);이 메서드는 Random() 객체를 통해 호출해야 하
C#에서 문자열의 선행 0 제거하기문자열 앞에 불필요한 0이 붙어 있는 경우가 종종 있습니다. 예를 들어 다음과 같은 문자열이 있다고 가정해 보겠습니다.String str = 000234;이렇게 문자열 앞쪽에 붙은 0(선행 제로)을 제거하려면 TrimStart() 메서드를 사용하면 됩니다. TrimStart() 메서드는 문자열의 시작 부분에서 지정한 문자들을 모두 잘라내는 기능을 하며, 여기서는 제거 대상 문자로 0을 지정합니다.TrimStart(new Char[] { 0 })아래는 선행 0을 제거하는 전체 소스 코드입니다.예제us
typeof()란?typeof()는 C#에서 제공하는 연산자로, 지정한 타입 자체의 Type 객체를 반환합니다. 이 연산자는 컴파일 타임에 평가되기 때문에, 특정 타입이 코드 작성 시점에 이미 확정되어 있을 때 사용합니다.예를 들어, byte 타입을 조회하면 다음과 같이 사용합니다.typeof(byte)typeof() 예제아래 예제는 int와 byte 타입의 전체 이름을 출력합니다.using System; class Program { static void Main() { Console.WriteLine(typ
C#에서 1부터 100 사이의 짝수를 모두 출력하려면 for 반복문과 나머지 연산자(%)를 함께 사용하면 간단하게 해결할 수 있습니다. 핵심 원리는 아주 간단합니다. 어떤 수를 2로 나눈 나머지가 0이면 그 수는 짝수라는 점입니다. 1단계: 1부터 100까지 반복하는 for 문 작성 먼저 변수 val을 1로 초기화하고, val이 100 이하일 동안 1씩 증가시키는 반복문을 만듭니다. 이렇게 하면 1부터 100까지 모든 숫자를 한 번씩 검사할 수 있습니다. for(val = 1; val <= 100; val++) {} 2단계:
C#에서 new 키워드는 배열의 인스턴스를 생성할 때 사용됩니다. new 연산자는 객체를 생성하거나 인스턴스화하는 역할을 담당하며, 아래 예제처럼 new를 이용해 클래스의 객체를 손쉽게 만들 수 있습니다.클래스 객체 생성다음은 new 키워드를 사용해 클래스의 객체를 생성하는 가장 기본적인 형태입니다.Calculate c = new Calculate();배열 인스턴스 생성new 키워드는 배열의 인스턴스를 생성할 때도 활용할 수 있습니다.double[] points = new double[10];컬렉션 객체 생성뿐만 아니라 컬렉션 객체
C# 프로그래밍에서 정수(int)를 문자열(string)로 변환하는 작업은 매우 자주 사용되는 기본 기능입니다. 이 글에서는 대표적인 세 가지 변환 방법인 ToString(), Convert.ToString(), 그리고 string.Format()을 소개하고, 각각의 사용법을 예제 코드와 함께 살펴보겠습니다.1. ToString() 메서드 사용정수를 문자열로 변환하는 가장 간단하고 직관적인 방법은 ToString() 메서드를 사용하는 것입니다. 모든 숫자형 변수는 이 메서드를 기본적으로 제공합니다.int a = 100; string
C# Object 클래스란?C#에서 Object 클래스는 모든 클래스의 최상위 기반 클래스(Base Class)입니다. .NET의 모든 형식은 명시적으로 상속을 선언하지 않아도 암시적으로 Object 클래스를 상속받으며, 따라서 어떤 개체든 Object 타입의 변수에 할당할 수 있습니다.Object 클래스가 제공하는 대표적인 메서드는 다음과 같습니다.번호메서드 및 설명1Equals(Object)지정된 개체가 현재 개체와 같은지 여부를 확인합니다.2Equals(Object, Object)지정된 두 개체 인스턴스가 서로 같은 것으로 간
C#의 TrimEnd() 메서드는 문자열 끝에서 배열로 지정된 문자들이 연속으로 나타나는 모든 부분을 제거합니다. 문자열 정리나 사용자 입력 처리 시 유용하게 활용할 수 있습니다.TrimEnd() 메서드란?TrimEnd() 메서드는 매개변수로 Char 배열을 받으며, 문자열의 끝에서부터 해당 배열에 포함된 문자가 더 이상 나오지 않을 때까지 계속해서 잘라냅니다. 이때 문자열 앞쪽이나 중간에 있는 동일한 문자는 영향을 받지 않습니다.예를 들어 다음과 같은 문자열이 있다고 가정해 보겠습니다.String str = 234561111;이
C#에서 선언(Declaration)이란 변수를 선언하여 메모리 공간만 할당한 상태를 의미하며, 아직 어떤 값도 설정되지 않습니다.반면 정의(Definition)는 변수에 실제 값을 할당하여 초기화까지 완료한 상태를 말합니다. 즉, 정의가 이루어진 변수부터 프로그램에서 안전하게 사용할 수 있습니다.이러한 선언과 정의의 구분은 단순 변수뿐만 아니라 배열(Array), 컬렉션(Collection) 등 모든 데이터 구조에 동일하게 적용됩니다. 참고로 C#에서는 지역 변수를 사용하기 전에 반드시 값이 할당되어야 하므로, 선언만 하고 사용하
C#에서 문자열의 불필요한 공백이나 특정 문자를 제거할 때 Trim()과 TrimStart() 메서드를 사용합니다. 두 메서드는 이름이 비슷하지만 동작 방식에 분명한 차이가 있습니다. 이 글에서는 각 메서드의 특징과 사용 예제를 통해 차이점을 자세히 알아보겠습니다. Trim() 메서드란? Trim()은 문자열의 앞쪽(선행)과 뒤쪽(후행)에 있는 모든 공백을 제거하는 문자열 메서드입니다. 예를 들어, 앞뒤에 공백이 포함된 문자열 Amit 에 Trim()을 적용하면 다음과 같이 양쪽 공백이 모두 제거됩니다. Amit Trim() 사용
C# 프로그래밍에서 동적(dynamic) 타입 변수에는 모든 형식의 값을 저장할 수 있으며, 이러한 변수에 대한 타입 검사는 런타임(실행 시점)에 수행됩니다.반면 객체(object) 타입은 C# 공용 타입 시스템(CTS, Common Type System)에서 모든 데이터 타입의 최상위 기본 클래스입니다. object는 System.Object 클래스의 별칭(alias)이며, 값 타입, 참조 타입, 미리 정의된 타입 또는 사용자 정의 타입 등 어떤 타입의 값이든 자유롭게 할당할 수 있습니다.동적 타입과 객체 타입의 핵심 차이점동적
C# 증감 연산자: 전위(Prefix) vs 후위(Postfix)C#에서 증가 연산자(++)와 감소 연산자(--)는 변수 앞에 붙이느냐 뒤에 붙이느냐에 따라 동작 방식이 달라집니다. 이 두 가지 사용 방식을 각각 전위 연산자, 후위 연산자라고 부르며, 코드 실행 순서와 반환되는 값에 중요한 차이가 있습니다.전위 연산자(Prefix Operator)란?증가 연산자 ++를 변수 앞에 붙여 사용하면, 변수의 값이 먼저 1 증가한 후 그 값이 반환됩니다. 이를 전위 증가 연산자라고 합니다. 마찬가지로 전위 감소 연산자(--a)도 같은 방식
C#에는 코드의 구조와 동작을 제어하는 여러 중요한 키워드가 있습니다. 그중에서도 실무에서 자주 사용되는 대표적인 키워드는 다음과 같습니다. sealed params internal this abstract sealed C#에서 메서드에 sealed 한정자를 사용하면 해당 메서드는 더 이상 재정의(override)할 수 없게 됩니다. 단, sealed 메서드는 반드시 파생 클래스의 일부여야 하며, 이미 override된 메서드에만 적용할 수 있습니다. class Base { public virtual void Print
C#은 개발자의 편의를 위해 다양한 내장 데이터 구조를 제공합니다. 그중에서도 가장 널리 사용되는 두 가지 컬렉션인 List와 ArrayList의 특징과 사용법을 살펴보겠습니다.1. List<T>제네릭 List<T>는 타입에 안전한(type-safe) 제네릭 컬렉션입니다. 반면 ArrayList는 비제네릭(non-generic) 컬렉션으로, 서로 다른 데이터 타입의 요소를 함께 저장할 수 있습니다.배열(Array)과 달리 List는 크기가 고정되어 있지 않아 요소를 추가할 때마다 동적으로 크기가 늘어납니다. 이
개요 C#에서 증가 연산자(++)는 정수 값을 1만큼 늘리고, 감소 연산자(--)는 정수 값을 1만큼 줄이는 단항 연산자입니다. 이 두 연산자는 반복문이나 카운터를 처리할 때 매우 자주 사용되며, 변수 앞에 붙느냐 뒤에 붙느냐에 따라 동작 순서가 달라진다는 점이 핵심입니다. int a = 10; a++; // 후위 증가: a는 11이 됨 ++a; // 전위 증가: a는 12가 됨 int a = 20; a--; // 후위 감소: a는 19가 됨 --a; // 전위 감소: a는 18이 됨 전위 연산과 후위 연산의 차이 증
C#에서는 Console 클래스를 통해 사용자 입력을 받을 수 있으며, 대표적인 메서드로 Read(), ReadKey(), ReadLine()이 있습니다. 이 세 메서드는 모두 표준 입력 스트림에서 데이터를 읽지만, 반환 형식과 동작 방식에서 중요한 차이가 있습니다. 1. Read() 메서드 Console.Read()는 표준 입력 스트림에서 다음 문자 하나를 읽어 해당 문자의 유니코드 코드 값을 int형(정수)으로 반환합니다. 사용자가 Enter 키를 눌러야 입력이 처리되며, 더 이상 읽을 문자가 없으면 -1을 반환합니다. int
C#의 연산자 오버로딩(Operator Overloading)은 사용자가 정의한 클래스나 구조체에 대해 +, -, == 같은 기본 연산자를 재정의하여 사용할 수 있게 해주는 강력한 기능입니다. 예를 들어, 복소수나 행렬처럼 직접 만든 타입에도 산술 연산자를 자연스럽게 적용할 수 있어 코드의 가독성과 직관성이 크게 향상됩니다.다만 모든 연산자를 오버로드할 수 있는 것은 아닙니다. 아래에서 C#에서 오버로드가 가능한 연산자와 불가능한 연산자를 항목별로 정리했습니다.오버로드할 수 있는 연산자1. 단항 연산자: +, -, !, ~, ++,
스레드(Thread) 클래스란?.NET의 System.Threading.Thread 클래스는 멀티스레드 프로그래밍을 구현할 때 사용되는 핵심 클래스로, 스레드의 생성·실행·제어·종료와 관련된 다양한 메서드를 제공합니다.그중에서도 가장 널리 사용되는 메서드는 Start, Sleep, Join, Abort입니다. 아래 표에서 Thread 클래스가 제공하는 전체 메서드 목록과 각 메서드의 역할을 확인할 수 있습니다.Thread 클래스 메서드 목록번호메서드 및 설명1public void Abort()호출된 스레드에서 ThreadAbortE