열거형(Enum)은 연도, 제품, 월, 계절 등과 같이 이름이 지정된 상수 집합을 하나의 이름 아래에 묶어 저장할 수 있는 특별한 값 형식(Value Type)입니다.Enum의 각 상수는 별도로 값을 지정하지 않으면 기본적으로 0부터 시작하여 1씩 순차적으로 증가합니다. 열거형은 고정된 상수 집합을 가지므로 코드의 가독성을 높여주고, foreach 루프 등을 통해 손쉽게 순회(traversal)할 수 있다는 장점이 있습니다.하지만 기본값에만 의존할 필요는 없습니다. 첫 번째 멤버에 원하는 값을 직접 할당하면 시작 인덱스를 자유롭게
C#에서 두 날짜를 비교하려면 먼저 DateTime 객체를 사용하여 비교할 날짜 두 개를 설정해야 합니다. C#의 DateTime 클래스는 날짜와 시간을 손쉽게 다룰 수 있도록 다양한 기능을 제공하며, 비교 연산자(<, >, == 등)를 직접 사용할 수 있다는 점이 큰 장점입니다.비교할 첫 번째 날짜 설정DateTime 생성자에 연, 월, 일을 순서대로 전달하여 첫 번째 날짜를 생성합니다.DateTime date1 = new DateTime(2018, 07, 20); Console.WriteLine(Date 1 : {0}
이 글에서는 사용자가 입력한 숫자의 약수(factor)를 모두 구해 화면에 출력하는 C# 프로그램을 단계별로 살펴봅니다. 약수란 어떤 수를 나누었을 때 나머지가 0이 되는 수를 의미합니다. 예를 들어 12의 약수는 1, 2, 3, 4, 6, 12입니다.1단계: 숫자 입력받기먼저 콘솔에서 숫자를 입력받습니다. Console.ReadLine()으로 문자열을 읽어온 뒤, int.Parse()를 사용해 정수형으로 변환합니다.Console.WriteLine(Enter a Number);n = int.Parse(Console.ReadLine(
C#에서 문자열의 단어 수를 계산하는 방법C# 프로그래밍에서 문자열에 포함된 단어의 개수를 계산해야 하는 경우가 자주 있습니다. 예를 들어 다음과 같은 문자열이 있다고 가정해 보겠습니다.str1 = Hello World!;이 문자열에는 총 2개의 단어가 포함되어 있습니다. 그렇다면 어떻게 단어 수를 자동으로 계산할 수 있을까요?단어 개수 계산의 기본 원리핵심 아이디어는 간단합니다. 문자열을 처음부터 끝까지 한 글자씩 반복하면서 탐색하고, 공백( ), 줄바꿈(\n), 탭(\t)과 같은 구분 문자를 발견할 때마다 카운트 변수를 1씩 증
C#과 .NET Framework란 무엇인가?C#(C Sharp)은 마이크로소프트(Microsoft)가 개발한 프로그래밍 언어이며, .NET Framework는 마이크로소프트가 개발한 소프트웨어 프레임워크입니다. 두 개념은 밀접하게 연관되어 있지만, 그 성격과 역할은 분명히 다릅니다..NET Framework의 핵심 구성 요소.NET Framework의 중심에는 CLR(Common Language Runtime, 공용 언어 런타임)이 있습니다. CLR은 .NET Framework의 가상 실행 환경으로, 코드 실행, 메모리 관리 등을
C#과 Java는 모두 코드를 체계적으로 구성하기 위한 메커니즘을 제공합니다. C#에서는 네임스페이스(Namespace)를, Java에서는 패키지(Package)를 사용하는데, 두 개념은 비슷해 보이지만 몇 가지 중요한 차이점이 있습니다. 이 글에서는 각각의 특징과 핵심적인 차이를 살펴보겠습니다. Java의 패키지(Package)란? Java의 패키지는 다음과 같은 목적으로 사용됩니다. 클래스, 인터페이스, 열거형(enum), 애노테이션 간의 이름 충돌 방지 접근 제어(Access Control) 기능 제공 클래스와 인터페이스의
public 접근 한정자(access specifier)는 클래스가 자신의 멤버 변수와 멤버 함수를 다른 함수나 객체에 공개할 수 있도록 허용합니다. 즉, public으로 선언된 모든 멤버는 클래스 외부에서 자유롭게 접근할 수 있습니다. public 멤버 변수의 특징 아래 예제에서는 length와 width 변수를 public으로 선언했습니다. 덕분에 이 변수들은 클래스 내부뿐만 아니라 클래스 외부의 코드에서도 접근하고 값을 변경할 수 있습니다. 클래스 외부에서 public 멤버에 접근하려면 해당 클래스의 인스턴스(객체)를 생성한
C#에는 컬렉션을 순회(iteration)하기 위한 두 가지 핵심 인터페이스가 있습니다. 바로 IEnumerable과 IEnumerator입니다. 이름이 비슷해 헷갈리기 쉽지만, 두 인터페이스는 역할과 사용 목적이 뚜렷하게 다릅니다.IEnumerable 인터페이스란?IEnumerable은 단 하나의 메서드인 GetEnumerator()를 정의하는 인터페이스입니다. 이 메서드는 IEnumerator 객체를 반환하며, 컬렉션을 순회할 수 있는 반복자(enumerator)를 제공하는 역할을 합니다.IEnumerable을 구현한 컬렉션은
C#에서 생성자는 크게 정적 생성자(Static Constructor)와 인스턴스 생성자(Instance Constructor) 두 가지로 나눌 수 있습니다. 두 생성자는 호출 시점과 역할이 완전히 다르기 때문에, 이 차이를 정확히 이해하는 것이 중요합니다. 정적 생성자(Static Constructor)란? 정적 생성자는 static 한정자를 사용하여 선언한 생성자입니다. 클래스에 처음 접근하는 시점에 단 한 번만 실행되며, 클래스의 전체 수명 주기 동안 다시 호출되지 않습니다. 주로 정적 필드를 초기화하거나 클래스 수준의 초기화
C#에서의 델리게이트(Delegate)델리게이트는 메서드에 대한 참조를 저장하는 참조 형식(reference type) 변수입니다. 가장 큰 특징은 런타임에 참조 대상인 메서드를 자유롭게 변경할 수 있다는 점으로, 이를 통해 코드의 유연성이 크게 향상됩니다.델리게이트를 선언하는 기본 문법은 다음과 같습니다.delegate <반환 타입> <델리게이트 이름> <매개변수 목록>델리게이트는 런타임 유연성을 제공합니다. 즉, 프로그램 실행 중에도 참조하는 메서드를 손쉽게 교체할 수 있습니다. 또한 델리게이트로
Java에서 super 키워드를 사용하던 개발자라면, C#에서는 그에 해당하는 base 키워드를 사용하면 됩니다.Java의 super 키워드란?Java의 super 키워드는 직계 부모 클래스(슈퍼클래스)의 인스턴스를 참조합니다. 주로 다음과 같은 용도로 사용됩니다.슈퍼클래스와 서브클래스에 같은 이름의 멤버가 존재할 때, 두 멤버를 구분하기 위해 사용됩니다.서브클래스 내부에서 슈퍼클래스의 생성자를 호출할 때 사용됩니다.C#의 base 키워드란?C#의 base 키워드는 부모 클래스인 기반 클래스(base class)의 생성자와 메서드,
C#의 Queue(큐) 컬렉션 클래스는 System.Collections 네임스페이스에 포함된 대표적인 자료구조입니다. 큐는 FIFO(First In First Out, 선입선출) 방식으로 요소를 저장하며, 가장 먼저 추가된 요소가 가장 먼저 제거됩니다. 이는 영화관 매표소 앞에서 사람들이 줄을 서고, 먼저 도착한 사람부터 표를 구매하는 것과 같은 원리입니다. Queue 클래스에는 두 가지 핵심 메서드가 있습니다. Enqueue(): 큐에 값을 추가하는 메서드 Dequeue(): 큐에서 값을 꺼내오는 메서드 Enqueue —
C#에서 이벤트(Event)는 대리자(Delegate)가 가진 문제점을 해결하기 위해 도입된 기능입니다. 대리자는 외부에서 쉽게 재정의(override)할 수 있어 코드에 오류가 발생할 위험이 있습니다. 이러한 문제를 방지하기 위해 C#은 이벤트를 사용하며, 이벤트는 대리자를 감싸는 래퍼(wrapper) 역할을 수행합니다. C#에서의 이벤트(Event) 이벤트를 사용하려면 먼저 대리자를 정의해야 합니다. 이벤트는 일종의 대리자 타입이며, 대표적인 예로 키보드의 키가 눌렸을 때 발생하는 상황을 들 수 있습니다. public dele
C#에서 날짜를 다룰 때는 DateTime 클래스를 사용합니다. DateTime이 표현할 수 있는 값의 범위는 서기 0001년 1월 1일 자정(오전 12:00:00)부터 서기 9999년 12월 31일 오후 11:59:59까지입니다.그럼 지금부터 DateTime 객체를 만들고 활용하는 방법을 예제와 함께 살펴보겠습니다.DateTime 객체 생성하기DateTime 구조체의 생성자에 연도, 월, 일을 순서대로 전달하면 원하는 날짜를 가진 객체를 만들 수 있습니다.예제using System; class Test { static vo
C# 성능 카운터란 무엇인가?C#에서 말하는 카운터는 성능 카운터(Performance Counter)를 의미합니다. 성능 카운터는 애플리케이션의 동작 상태와 성능을 실시간으로 측정하고 파악할 수 있도록 도와주는 강력한 진단 도구입니다.애플리케이션에 성능 모니터링이 필요한 이유웹 애플리케이션, 모바일 앱, 데스크톱 프로그램 등 어떤 종류의 애플리케이션을 개발하든 성능 모니터링은 필수적입니다. CPU 사용량, 메모리 소비, 응답 시간 같은 지표를 지속적으로 추적해야 병목 현상을 조기에 발견하고 안정적인 서비스 품질을 유지할 수 있습니
C# 개발에서 가장 널리 사용되는 데이터베이스는 Microsoft SQL Server와 Oracle입니다. 이러한 데이터베이스를 활용해 작업하려면 일반적으로 다음과 같은 단계를 거치게 됩니다. 1. 연결(Connect) 데이터베이스에 접속하려면 먼저 데이터베이스 이름과 선택적 매개변수, 그리고 인증 정보(Credentials)를 설정해야 합니다. 특히 사용자 이름과 비밀번호는 데이터베이스와의 연결을 설정하는 데 필수적인 요소입니다. 연결 문자열(Connection String)은 대략 다음과 같은 형태로 작성됩니다. private
커플링(Coupling, 결합도)은 C#에서 모듈 간의 관계, 즉 모듈들이 서로 얼마나 의존하고 있는지를 나타내는 개념입니다. 소프트웨어 설계에서 결합도는 코드의 품질과 유지보수성을 좌우하는 중요한 요소로, 크게 느슨한 결합(Loose Coupling)과 긴밀한 결합(Tight Coupling) 두 가지 유형으로 나뉩니다.느슨한 결합(Loose Coupling)느슨한 결합은 가장 권장되는 설계 방식입니다. 클래스 간의 의존성을 최소화하기 때문에 한 클래스를 수정하더라도 다른 클래스에 영향을 주지 않습니다. 의존성이 줄어들면 해당 클
C#에서 decimal 형식은 금융 계산처럼 높은 정밀도가 필요한 숫자 연산에 필수적으로 사용됩니다. System 네임스페이스의 Decimal 구조체는 다양한 내장 메서드를 제공하여 덧셈, 나눗셈, 비교, 반올림 등의 작업을 손쉽게 처리할 수 있도록 도와줍니다.아래 표는 C#에서 자주 사용되는 대표적인 decimal 관련 함수들을 정리한 것입니다.번호함수 이름 및 설명1Add(Decimal, Decimal)지정된 두 개의 Decimal 값을 더한 결과를 반환합니다.2Ceiling(Decimal)지정된 10진수보다 크거나 같은 가장
C# 응집도(Cohesion)란 무엇인가?C#에서 응집도(Cohesion)는 하나의 모듈 내부 요소들이 얼마나 밀접하게 관련되어 있는지를 나타내는 개념입니다. 즉, 모듈이 수행하는 기능의 강도를 의미하며, 응집도가 높을수록 프로그램 설계는 더욱 우수해집니다.응집도는 메서드나 내부 모듈과 같은 모듈 내부 요소들 간의 의존 관계를 말합니다. 높은 응집도를 가진 코드는 클래스와 메서드를 손쉽게 재사용할 수 있다는 큰 장점이 있습니다.높은 응집도의 대표적인 예시: System.Math 클래스높은 응집도의 좋은 예로 .NET의 System.
C#에서 문자열(string)은 불변(immutable)이기 때문에 한 번 생성된 문자열의 특정 문자를 직접 수정할 수 없습니다. 따라서 주어진 인덱스에 있는 문자를 교체하려면 문자열을 문자 배열(char 배열)로 변환한 뒤 해당 위치의 값을 변경하고, 다시 문자열로 만들어야 합니다. 1단계: 문자열 설정 먼저 교체 작업을 진행할 원본 문자열을 선언합니다. string str1 = Port; Console.WriteLine(Original String: +str1); 2단계: 문자열을 문자 배열로 변환 ToCharArray()