1. 클래스 선언 및 객체 생성
클래스는 프로그램의 기본 단위로, 필드와 메소드 등을 포함할 수 있습니다. 아래는 Fraction 클래스에 대한 예시입니다.
using System;
class Fraction {
int numerator; // 분자
int denominator; // 분모
// 생성자
public Fraction(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
}
// 덧셈 메소드
public Fraction Add(Fraction f) {
int newNumerator = this.numerator * f.denominator + f.numerator * this.denominator;
int newDenominator = this.denominator * f.denominator;
return new Fraction(newNumerator, newDenominator);
}
// 출력 메소드
public void PrintFraction() {
Console.WriteLine($"{numerator}/{denominator}");
}
}
class Program {
public static void Main() {
Fraction f1 = new Fraction(1, 2); // 1/2
Fraction f2 = new Fraction(1, 3); // 1/3
Fraction result = f1.Add(f2); // 덧셈 연산
result.PrintFraction(); // 출력: 5/6
}
}
2. 객체 선언 및 생성자 사용
객체는 클래스를 사용하여 생성됩니다. new
키워드를 통해 객체를 생성하며, 생성자는 객체의 필드를 초기화할 때 사용됩니다.
Fraction f1 = new Fraction(1, 2); // 분수 1/2 객체 생성
Fraction f2 = new Fraction(1, 3); // 분수 1/3 객체 생성
3. static 필드 및 메소드
정적 멤버는 객체 단위가 아닌 클래스 단위에서 공유됩니다.
즉, 해당 필드 또는 메서드를 사용할 때 클래스 이름으로 바로 접근할 수 있습니다.
using System;
public class MathOperations {
public static int Add(int a, int b) {
return a + b;
}
}
class Program {
public static void Main() {
int result = MathOperations.Add(10, 20); // static 메소드 호출
Console.WriteLine(result); // 출력: 30
}
}
4. 매개변수 전달 (Call by Value)
C#에서는 기본적으로 값에 의한 호출을 사용합니다.
값이 복사되어 전달되므로, 메소드 내에서 값을 변경해도 원래 값에는 영향을 주지 않습니다.
using System;
class CallByValueApp {
static void Swap(int x, int y) {
int temp = x;
x = y;
y = temp;
Console.WriteLine($"Swap: x = {x}, y = {y}");
}
public static void Main() {
int x = 1, y = 2;
Console.WriteLine($"Before: x = {x}, y = {y}");
Swap(x, y); // 값이 복사됨
Console.WriteLine($"After: x = {x}, y = {y}"); // 원래 값은 변경되지 않음
}
}
5. 매개변수 전달 (Call by Reference)
ref
키워드를 사용하면 참조에 의한 호출을 할 수 있으며, 메소드에서 변수의 값을 변경하면 원래 변수의 값도 변경됩니다.
using System;
class CallByReferenceApp {
static void Swap(ref int x, ref int y) {
int temp = x;
x = y;
y = temp;
Console.WriteLine($"Swap: x = {x}, y = {y}");
}
public static void Main() {
int x = 1, y = 2;
Console.WriteLine($"Before: x = {x}, y = {y}");
Swap(ref x, ref y); // 참조로 전달됨
Console.WriteLine($"After: x = {x}, y = {y}"); // 원래 값도 변경됨
}
}
6. 매개변수 배열
params
키워드를 사용하여 가변 길이의 매개변수를 받을 수 있습니다. 예를 들어, 여러 개의 숫자를 한 번에 받는 메소드를 정의할 수 있습니다.
using System;
class ParameterArrayApp {
static void PrintNumbers(params int[] numbers) {
foreach (int number in numbers) {
Console.WriteLine(number);
}
}
public static void Main() {
PrintNumbers(1, 2, 3, 4, 5); // 여러 개의 매개변수를 전달 가능
}
}
7. Main 메소드
C# 프로그램의 진입점은 Main
메소드입니다. Main
메소드는 명령줄 인수를 받을 수 있으며, 아래 예시는 명령줄에서 전달된 인수를 출력하는 프로그램입니다.
using System;
class CommandLineArgsApp {
public static void Main(string[] args) {
for (int i = 0; i < args.Length; ++i) {
Console.WriteLine($"Argument[{i}] = {args[i]}");
}
}
}
// 명령줄 실행 예시: C:\> CommandLineArgsApp 12 Medusa 5.26
// 출력:
// Argument[0] = 12
// Argument[1] = Medusa
// Argument[2] = 5.26
'2학년 2학기 > 윈도우즈 프로그래밍' 카테고리의 다른 글
인터페이스(1) - 파생 클래스, 메소드 오버라이딩, 추상 클래스 (0) | 2024.09.30 |
---|---|
클래스(2) - 메소드 / 연산자 오버로딩, 생성자, 인덱서, 프로퍼티 (0) | 2024.09.30 |
필드와 프로퍼티의 차이 (0) | 2024.09.30 |
표준 입출력 (0) | 2024.09.30 |
오버 플로우 검사문 (Checked) (0) | 2024.09.30 |