본문 바로가기
  • 식초 한잔 할래..?
공부/게임 공부

C# 기본 문법

by 돼지피그푸곰 2025. 9. 29.

C#의 기본. 언어 문법 공부하는 날입니다.

 

꽤나 오래 전에 했던 것을 다시 이렇게 보니, 약간 헛 살았다는 느낌(?)도..

하긴 전공 수료했는데 부트캠프 수료하는 것 자체가 말이 안되는 거긴 합니다.

그래도 안하고 집에서 뒹굴거리는 것보다는 나으니, 한 번 힘 내서 해보겠습니다.

 

📕 챕터1-1 : C#소개, 개발 환경 설정

 

 

C언어란 무었이냐.

컴퓨터 언어죠.

너무 기본은 패스하겠습니다.

📌 C# 기본 구조 설명

  • using System;
    → C#에서 기본 제공 네임스페이스(System)를 사용하기 위한 코드
    → Console 클래스 같은 기능을 사용하려면 필요
  • namespace
    → 코드를 논리적으로 묶는 역할
    → 클래스나 다른 네임스페이스의 컨테이너 역할
  • class Program
    → C# 클래스 정의 키워드
    → 클래스 이름을 Program으로 지정
  • static void Main()
    → C# 프로그램의 진입점(entry point)
    → 프로그램 실행 시 자동으로 호출되는 메서드
    → 필수 메서드 (없으면 실행 불가)

Console.WriteLine("Hello World");  이 C+에서 printf 같은 느낌입니다.

저 문구 안에 다양한 사칙연산이 가능하고, 띄어 쓰기 등등이 있는데, 얄짤없이 C언어만의 규칙이 있기 때문에 외워야 합니다.

따로 설명도 필요 없습니다. 그냥 외워야 합니다.

 

이 부분은 자주 까 먹는 부분인데, 하다보면 대부분 float 혹은 double을 쓰게 되는 것 같습니다.

양이 많은 실수들이라서, 

 

범위랑 상관 없는 char, ,string, bool.은 각각 문자, 문자열, 참 혹은 거짓 이란 뜻인 것들입니다.

 

Console.ReadLine

은 입력받는 것. 

 

 

뭐 설명 필요 없습니다. 그냥 외워야 합니다. 어차피 많이 쓰이는 놈들은 정해져 있긴 합니다. 

 

간단한 수학이라 한 번씩만 보면 거의 다 외워집니다.

 

 


 

 

조건문, 반복문

 

 

 

 

 

 

 

고1 때 영어 공부해 봤으면 다 아는 영문법입니다. ~~동안, ~~라면, 의 영어를 컴퓨터 식으로 옮겨 놓은 것 뿐입니다.

이 외에도 switch, foreach 등이 있지만 약간의 쓰임이 다르니 약간 씩만 찾아 보면 됩니다. 웬만하면 저 위의 3개로 다 함

 

 

 

위 사진은 배열에 관한건데, 배열은 특히나 자주 쓰이는 것 같습니다.

물론 여기서 자주 쓰이지 않는 것은 없긴 합니다.

데이터의 유형과 이름, 

그리고 우성 배열 초기화 해 주고

데이터 선언 및 어떤 식으로 할 건지.

 

📌 요약 : 메서드

1) 메서드란?

  • 특정 작업을 수행하는 코드 블록(기능 단위)
  • 역할
    • 코드 재사용 → 반복 줄임
    • 모듈화 → 작은 단위로 관리
    • 가독성·유지보수성 향상
    • 코드 중복 제거
    • 추상화 → 이름만 봐도 기능 이해

 

그리고 매서드 방식. 매서드. 방식, 방법이라는 뜻이죠.

 

내가 정한 메소드를 하나 만들어 놓고, 나중에 가져오면 그 방식 대로, 그 메소드 대로 처리해 주는겁니다.

 

앞으로 숫자 2개 받으면 난 그걸 무조건 더할거야. 라는 메소드를 정해두고, 이름을 sum 메소드 라고 지으면

숫자 2개를 받은 후에,  sum메소드를 사용하겠다! 라고 하면, 그 과정을 적지 않고 그냥 sum만 호출(가져오기)하면 되는 것이지요.

 

그리고 이것들을 적용시킬 클래스와 객체,

📌 클래스와 객체 요약

1) 클래스의 특징 (OOP 핵심 4가지 + 객체)

  1. 캡슐화(Encapsulation)
    • 데이터 + 기능을 하나로 묶음
    • 외부 접근 제한 → 안정성, 유지보수성 ↑
  2. 상속(Inheritance)
    • 기존 클래스 재사용, 확장
    • 코드 중복 ↓, 계층 구조 형성
  3. 다형성(Polymorphism)
    • 하나의 메서드/인터페이스 → 다양한 구현
    • 오버로딩/오버라이딩으로 구현
  4. 추상화(Abstraction)
    • 복잡한 시스템 단순화
    • 핵심만 모델링 (세부 구현 감춤)
  5. 객체(Object)
    • 클래스에서 생성된 실체
    • 상태(필드) + 행동(메서드)를 가짐
    • 서로 상호작용하며 프로그램 동작

2) 클래스 구성 요소

  • 필드(Field) : 데이터 저장 (객체 상태)
  • 메서드(Method) : 동작 정의 (객체 행동)
  • 생성자(Constructor) : 객체 초기화 (자동 호출)
  • 소멸자(Destructor) : 객체 해제 시 실행

3) 클래스 vs 구조체

  • 구조체(struct) : 값 형식, 스택에 저장, 상속 불가 → 작은 데이터 구조에 적합
  • 클래스(class) : 참조 형식, 힙에 저장, 상속 가능 → 복잡한 객체 표현에 적합

4) 접근 제한자

  • public : 외부에서 자유롭게 접근 가능
  • private : 같은 클래스 내부에서만 접근
  • protected : 같은 클래스 + 상속받은 클래스에서 접근 가능

5) 생성자

  • 정의: 객체 생성 시 호출되는 특별한 메서드
  • 클래스 이름과 동일, 반환 타입 없음
  • 오버로딩 가능 (매개변수에 따라 여러 개 정의 가능)
  • 사용자가 생성자를 정의하면 기본 생성자는 자동 생성되지 않음

 

간단하게, 

큰 클래스 안에, 이런 저런 객체들이 있고, 그 객체들을 어떤 구조로 할 것인지 정하고, 캡슐화, 상속, 다형성 등 어떤 방식으로 짤건지 구상.

 

입니다.

 

📌 상속 (Inheritance) 요약

1) 상속의 개념

  • 기존 클래스(부모, 상위 클래스)를 기반으로 새로운 클래스(자식, 하위 클래스)를 만드는 것
  • 자식 클래스는 부모의 필드, 메서드, 프로퍼티 등을 상속받아 사용 가능
  • 부모의 기능을 재사용, 확장, 수정할 수 있음

2) 상속의 장점

  • 코드 재사용 → 중복 줄임
  • 계층 구조 표현 → 구조 명확
  • 유지보수성 향상 → 부모 클래스만 수정해도 자식 클래스에 반영됨

3) 상속의 종류

  • 단일 상속 : C#은 클래스 간 단일 상속만 지원
  • 다중 상속 : 여러 부모 클래스를 동시에 상속 (C#은 지원 ❌)
  • 인터페이스 상속 : 클래스는 여러 인터페이스를 동시에 상속 가능

4) 상속의 특징

  • 부모 멤버 접근 가능 → 재사용
  • 메서드 재정의(override) → 다형성 구현
  • 상속 계층 구조 → 여러 단계 가능 (너무 깊으면 복잡해짐)
  • 접근 제한자 영향 → public, protected는 자식이 접근 가능, private는 불가능

✔ 핵심 정리:
상속은 코드 재사용 + 확장 + 다형성 구현의 핵심 도구이며,
C#은 단일 상속 + 다중 인터페이스 상속 구조를 채택합니다.

 

 

이 외에도

out, ref 키워드,  다중 상속을 사용하지 않는 이유, 인터페이스를 사용하는 이유, 예외 처리, 델리게이트, 람다식, Nullable 형, 문자열 빌더 (StringBuilder) 등등 많습니다.

 

일단은 개념 및 예제 위주로 문제를 풀었고, 내일은 Text RPG를 만들건데, 이렇게 이틀은 좀 가볍게 하고, 그 다음 날에 하루 종일 다시 복습하고 풀고 설명하면서 개념 확실히 잡아가보도록 하겠습니다.