C#을 배우고 난 뒤에 학습노트입니다.
문법뿐만 아니라 왜 이렇게 쓰는지, 어떻게 쓰는지를 쉽게 이해할 수 있도록 예제와 함께 설명합니다.
모든 C# 프로그램은 아래와 같은 형태로 시작합니다.
using System;
namespace BasicSyntaxDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, C#");
}
}
}
using System;
→ System 네임스페이스 안에 있는 클래스(예: Console)를 사용하겠다는 선언입니다.
→ 자주 쓰는 기능을 불러오는 역할입니다.
namespace BasicSyntaxDemo
→ 네임스페이스는 클래스들을 그룹으로 묶는 일종의 폴더 개념입니다.
→ 나중에 큰 프로젝트를 만들 때 코드 간 충돌을 방지합니다.
class Program
→ 클래스는 객체를 정의하는 기본 단위입니다.
→ 모든 코드 블록은 클래스 안에 있어야 합니다.
static void Main(string[] args)
→ 프로그램이 시작되는 지점입니다.
→ Main 메서드가 있어야 실행됩니다.
C#은 정적인 언어라서 변수를 선언할 때 타입을 반드시 지정해야 합니다.
int: 정수형
예시: int age = 20;
double: 실수형
예시: double pi = 3.14;
bool: 참/거짓 값
예시: bool isAdult = true;
char: 한 개의 문자
예시: char grade = 'A';
string: 문자열
예시: string name = "Tom";
var: 자동 타입 추론
예시: var count = 100;
int number; // 선언만 (값 없음)
number = 10; // 나중에 값 할당
string text = "Hello"; // 선언과 동시에 값 할당
var score = 99; // var는 오른쪽 값을 보고 타입을 자동으로 추론 (여기선 int)
var는 편리하지만 초보자일 땐 명시적으로 타입을 쓰는 연습을 추천합니다.
연산자는 변수나 값을 조작하는 데 사용하는 기호입니다.
int a = 5, b = 3;
// 산술 연산자
Console.WriteLine(a + b); // 8
Console.WriteLine(a * b); // 15
// 비교 연산자
Console.WriteLine(a > b); // true
// 논리 연산자
Console.WriteLine(a > b && b > 0); // true
조건문은 특정 조건에 따라 코드의 흐름을 분기하는 데 사용됩니다.
int score = 85;
if (score >= 90)
Console.WriteLine("A");
else if (score >= 80)
Console.WriteLine("B");
else
Console.WriteLine("C 이하");
조건은 위에서부터 아래로 순차적으로 검사됩니다.
if는 조건이 참일 경우 실행되고, 거짓이면 다음 조건으로 넘어갑니다.
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("우수");
break;
case 'B':
Console.WriteLine("보통");
break;
default:
Console.WriteLine("재도전");
break;
}
변수의 값에 따라 여러 케이스 중 하나를 선택합니다.
break를 쓰지 않으면 아래 코드까지 연달아 실행되니 주의해야 합니다.
반복문은 같은 작업을 여러 번 반복하고 싶을 때 사용합니다.
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
변수 i를 0부터 시작해 5 미만까지 1씩 증가시키며 실행됩니다.
반복 횟수가 정해져 있을 때 자주 사용됩니다.
int i = 0;
while (i < 5)
{
Console.WriteLine(i);
i++;
}
조건이 참인 동안 계속 반복됩니다.
조건을 잘못 설정하면 무한 루프가 될 수 있으니 주의!
string[] arr = { "A", "B", "C" };
foreach (var item in arr)
{
Console.WriteLine(item);
}
배열이나 컬렉션 안의 요소를 하나씩 꺼내어 반복합니다.
순서대로 전체를 순회하고 싶을 때 유용합니다.
프로그램 실행 중 오류가 날 수 있는 부분을 안전하게 처리하는 구조입니다.
try
{
int x = int.Parse("abc"); // 오류 발생 예상
}
catch (FormatException ex)
{
Console.WriteLine("형식 오류: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("오류 발생: " + ex.Message);
}
finally
{
Console.WriteLine("항상 실행됩니다.");
}
try: 오류가 발생할 가능성이 있는 코드
catch: 오류 발생 시 실행할 코드
finally: 오류 발생 여부와 상관없이 무조건 실행되는 영역
예외 처리를 하지 않으면 프로그램이 중단될 수 있습니다.