[C#] 기초 문법

dain·2024년 1월 23일

C#

목록 보기
1/5
post-thumbnail

변수

  • 정수형

    • int (4바이트)
    • sbyte, byte, short, ushort, uint, long, ulong

    🩵 비트로 보는 정수 자료형

    • bit
      • 메모리의 가장 작은 단위/공간
      • 1비트로 2개의 숫자 표현 가능 (0 또는 1)
    • byte
      • 1 byte = 8 bit
      • 1비트로 256개의 숫자 표현 가능
    • 비트 연산자
      • 2m`2^m << nn`
        • m칸의 비트를 n칸만큼 왼쪽으로 이동
        • 예: 8 << 2 ⇒ 32
      • 2m`2^m >> nn`
        • m칸의 비트를 n칸만큼 오른쪽으로 이동
        • 예: 16 >> 3 ⇒ 2

    🩵 음수는 2의 보수법으로 표현한다.

  • 실수형
    • float (4바이트)
    • double, decimal
  • 문자형
    • char (2바이트)
    • string

      string은 참조 타입이다.
      (나머지 자료형은 값 타입)

      💛 참조 타입
      → 변수의 선언만으론 오브젝트가 생성되지 않음
      new 키워드를 통해 오브젝트를 생성하고 이를 각 변수가 참조

  • boolean형
    • bool (1바이트)


그룹형 변수

  • 배열 (Array)
    • 선언 및 초기화
      // 방법 1 
      타입[] 변수명 = {데이터1, 데이터2, 데이터3 ... };
      
      // 방법 2
      타입[] 변수명 = new 타입[배열의 크기]; // 선언
      변수명[index] = 데이터; // 초기화
  • 비제너릭
    • ArrayList
    • HashTable
    • Stack
    • Queue
  • 제너릭
    • List
    • Dictionary
    • Stack
    • Queue


형변환

  • 어떤 변수를 다른 자료형으로 변환하는 것

    💛 구분

    • 명시적 형변환
      • 특정 문법을 통해 직접 명시하는 형변환
    • 암시적 형변환
      • 형변환을 명시하지 않아도 자동 형변환
      • 특정 경우에만 가능
  • 변수의 형변환
    • (자료형)변수명
    • 숫자형.Parse("문자형값") : “문자형값”을 숫자형으로 변환
    • 변수.ToString() : 변수를 string으로 변환
  • 클래스의 형변환
    • (변환할클래스)변환되는클래스의인스턴스
    • 자식 클래스는 부모 클래스로 형변환 가능
      (역 성립 X)
  • 자료형마다 차지하는 메모리 크기와 표현할 수 있는 범위가 다르기 때문에 형변환시 주의해야 한다.

    🩵 형변환시 발생할 수 있는 문제

    • 오버플로우
      • 데이터 형식의 최댓값보다 큰 값을 넣을 경우 넘치는 현상
      • int a = 128;
        sbyte b = (sbyte)a;
        Debug.Log(b) // 결과: 127
    • 언더플로우
      • 데이터의 형식의 최솟값보다 작은 값을 넣을 경우 넘치는 현상
      • int c = -30;
        uint d = (uint)c;
        Debug.Log(d); // 결과: 42839117(쓰레기값)
  • 관련 키워드
    • is
      • 형변환 가능 여부에 대한 변수
      • true 또는 false 반환
      • class Child : Parent {}
        
        Parent parent = new Parent();
        Child child = new Child();
        
        if (child is Parent)
        {
        	parent = (Parent)child;
        }
    • as
      • 형변환 가능 여부를 확인한 후,
        가능한 경우 형변환을 하고, 가능하지 않은 경우 null 반환
      • 장점: 소괄호를 사용한 형변환과는 다르게 오류 발생 X
      • 단점: 참조 타입에만 사용 가능
      • class Child : Parent {}
        
        Parent parent = new Parent();
        Child child = new Child();
        Parent parent = child as Parent();


연산자

  • 산술 연산자
    : +, -, *, /, %
  • 증감 연산자
    • 전위 증감 연산자
      : --변수, ++변수
    • 후위 증감 연산자
      : 변수--, 변수++

      계산 및 할당 순서에 차이 있음!

  • 대입 연산자
    • 일반 대입 연산자: =
    • 복합 대입 연산자: 산술연산자=
  • 비교 연산자
    : <, <=, >, >=, ==, !=
  • 논리 연산자
    : &&, ||, !=
  • 삼항 연산자
    condition ? A : B
    : true일 때 A, false일 때 B 출력


조건문

  • if 문
  • switch 문
    switch (변수) {
    	case1:
    		수행할 문장;
    		break;
    	case2:
    		수행할 문장;
    		break;
    	default: // 모든 case를 통과한 후 실행 (선택)  
    		수행할 문장;
    		break;
    }


반복문

  • while 문
  • for 문
    // 사용 예시 1
    for (int i = 0; i < list.Length; i++) 
    
    // 사용 예시 2
    for (int item in list) 
  • foreach 문
    foreach (자료형 변수명 in 그룹형변수)


함수



클래스

  • 만들 대상을 정의하는 틀 (변수 & 함수의 묶음)
  • 클래스의 멤버
    • 클래스에 속한 변수 : 멤버 변수/필드
    • 클래스에 속한 함수
  • 클래스의 인스턴스 생성
    클래스명 변수명 = new 클래스명();

    클래스는 참조 타입 → new 키워드를 통해 생성

  • 상속
    class 자식 클래스명 : 부모 클래스
    • 자식 클래스에서 부모 클래스의 변수에 바로 접근 가능
    • 자식 클래스에서 base 키워드를 통해 부모 클래스의 함수에 접근 가능
    • 특징
      • 중첩 상속(상속의 상속) 가능
      • 다중 상속(여러 개를 상속) 비권장
profile
자라나는 감자

0개의 댓글