728x90
반응형

 변수, 조건문, 반복문

C#을 배우기 시작했다면 가장 먼저 익혀야 하는 것은 기본 문법입니다.
이번 글에서는 변수 선언, 조건문, 반복문, 기본 자료형 같은 C#의 기초 문법을 예제와 함께 정리해드립니다.


 1. 변수와 자료형

C#은 정적 타입 언어이므로, 변수를 선언할 때 타입을 명시해야 합니다.

int number = 10;            // 정수형
float pi = 3.14f;           // 실수형
string name = "Alice";     // 문자열
bool isActive = true;      // 논리형
char grade = 'A';          // 문자형

 var 키워드

타입을 명시하지 않고 var를 사용하면 자동으로 타입 추론됩니다.

var age = 25;              // 컴파일러가 int로 추론
var message = "Hello";     // string으로 추론

 2. 조건문

 if / else

int score = 85;
if (score >= 90)
{
    Console.WriteLine("A 학점");
}
else if (score >= 80)
{
    Console.WriteLine("B 학점");
}
else
{
    Console.WriteLine("C 학점 이하");
}

 switch

int menu = 2;
switch (menu)
{
    case 1:
        Console.WriteLine("게임 시작");
        break;
    case 2:
        Console.WriteLine("설정");
        break;
    default:
        Console.WriteLine("종료");
        break;
}

 3. 반복문

 for

for (int i = 0; i < 5; i++)
{
    Console.WriteLine($"i = {i}");
}

 while

int count = 0;
while (count < 3)
{
    Console.WriteLine("반복 중...");
    count++;
}

 foreach

컬렉션(List, 배열 등)을 순회할 때 사용

string[] fruits = { "사과", "바나나", "포도" };
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

 4. 콘솔 입력과 출력

Console.WriteLine("이름을 입력하세요:");
string name = Console.ReadLine();
Console.WriteLine($"안녕하세요, {name}님!");

Console.ReadLine()은 문자열로 입력을 받고, 필요한 경우 int.Parse, double.Parse 등을 이용해 변환합니다.


 

이 글에서는 C#의 가장 기본이 되는 문법들을 정리해봤습니다:

  • 변수와 자료형
  • 조건문 (if, switch)
  • 반복문 (for, while, foreach)
  • 콘솔 입출력

처음 시작하는 분들께 도움이 되었길 바랍니다 

728x90
반응형
728x90
반응형

C#으로 개발하다 보면 TaskParallel.For는 자주 접하게 됩니다.
특히 비동기 처리대량 데이터 처리, UI 멈춤 방지를 할 때 필수적으로 사용되죠.

이 글에서는 두 개념을 확실히 구분하고, 실제로 어떻게 사용하는지 코드 예시와 함께 정리해보겠습니다.


1. Task - 비동기 프로그래밍의 기본 단위

-. Task란?

Task는 .NET에서 비동기 작업을 처리하기 위한 대표적인 클래스입니다.

쉽게 말하면, "이 작업은 백그라운드에서 처리하고 끝나면 알려줘" 라는 개념입니다.

-.  핵심 특징

  • 비동기 실행: UI 쓰레드를 막지 않음
  • await로 작업 완료 기다릴 수 있음
  • Task.Run으로 쉽게 실행 가능

-.  사용 예제

// 무거운 작업을 백그라운드에서 실행
await Task.Run(() =>
{
    LongRunningOperation();
});

void LongRunningOperation()
{
    Thread.Sleep(3000); // 3초 대기 시뮬레이션
    Console.WriteLine("작업 완료");
}

2. Parallel.For - 병렬 루프 처리

-.  Parallel.For란?

Parallel.For는 반복 작업을 여러 쓰레드로 나눠서 동시에 처리해주는 기능입니다.

반복문이 많을 때 하나씩 처리하지 않고 여러 개를 동시에 돌리는 방식입니다.

-.  핵심 특징

  • CPU 코어를 최대한 활용함
  • 순차 루프보다 훨씬 빠를 수 있음
  • 단, 병렬 처리에 적합하지 않은 작업은 오히려 느려질 수 있음

-.  사용 예제

Parallel.For(0, 10, i =>
{
    Console.WriteLine($"{i} 처리 중 - 쓰레드: {Thread.CurrentThread.ManagedThreadId}");
    Thread.Sleep(500); // 작업 시뮬레이션
});

3. Task와 Parallel.For 차이점

항목TaskParallel.For

목적 비동기 실행 병렬 반복 처리
주로 쓰는 상황 UI 멈춤 방지, 백그라운드 실행 대량 루프 처리 속도 개선
작성 형태 Task.Run() 또는 async/await Parallel.For(start, end, action)
내부 스레드 쓰레드풀 쓰레드풀 (다중 스레드)

4. 실무 적용 예시

1) UI를 멈추지 않고 처리

// UI 앱에서 버튼 클릭 시
private async void btnStart_Click(object sender, EventArgs e)
{
    btnStart.Enabled = false;
    await Task.Run(() => LongCalculation());
    btnStart.Enabled = true;
}

2) 대량 데이터 병렬 저장

Parallel.For(0, 100, i =>
{
    SaveToIniFile(i); // INI 저장 예시
});

5. 주의할 점

  • Parallel.For 안에서는 UI 접근을 절대 하면 안 됨 (Control.Invoke 필요)
  • 과도한 쓰레드 생성은 성능 저하 유발 가능
  • 작업 간 공유 리소스가 있을 경우 락 처리 필수

TaskParallel.For는 서로 역할이 다릅니다. 하지만 함께 쓰면 강력한 성능 최적화가 가능합니다.

  • Task: 작업을 비동기로 실행 (UI 안 멈추게 하기 위함)
  • Parallel.For: 반복 작업을 병렬로 처리 (속도 개선 목적)

실제 프로젝트에서는 두 개를 조합해서 사용하는 경우가 많습니다.

728x90
반응형

+ Recent posts