3 분 소요

1) 기본 출력

  • 메인함수는 프로젝트에서 유일하게 한 개 존재
  • 참고) 유니티 프로젝트는 메인함수가 보여지지 않으며 어딘가에 존재
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World");
    }
}

2) 언어별 프로그램 파일 확장자에 의한 구분

  • C : 헤더파일(.h), 언어 파일(.c)
  • C++ : 헤더파일(.h), 언어 파일(.cpp)
  • C# : 언어 파일(.cs)
    클래스 기반의 파일이 한개만 존재 (헤더가 없음)

3) namespace

  • 성격이나 하는 일이 비슷한 클래스, 구조체, 인터페이스를 하나의 이름 아래 묶어 놓았다.
  • 다른 클래스에서 사용하려면 using 이라는 지시문 사용한다.
  • namespace로 감싸지 않은 class는 프로젝트 전역에서 사용할 수 있다.
  • class는 기본적으로 어느 곳이나 다 포함되어 있지만, namespace를 사용하면 이를 조절할 수 있다.
  • 원하는 코드에만 class를 불러올 수 있다는 측면에서 효율적이라 볼 수 있다.
namespace HelloWorld_CSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
        }
    }
}

4) 값 형식의 변수

  • 단순형식
    • 부호있는 정수 : sbyte, short, int, long
    • 부호 없는 정수 : byte, ushort, uint, ulong
    • 문자 : char
    • 실수(부동 소수점) : float, double
    • 고정밀 10진수 부동 소수점 : decimal (실수)
    • 부울 : bool
    • 구조체 : struct
    • 열거체 : enum
  • 참조형식 : new 를 사용하여 메모리 할당
    • 클래스 형식 : class
    • 인터페이스 형식 : interface
    • 배열 형식 : int[]
    • 대리자 형식 : delegate
    • 문자열 형식 : string

image

5) 변수 이름 명명 규칙

  • 변수
    • 첫문자 소문자
    • 캐멀 케이스
    • ex) int classLevel;
  • 구조체
    • 첫문자 대문자
    • 캐멀 케이스
    • ex) public struct Data
  • 열거체
    • 모두 대문자
  • 클래스
    • 첫문자 대문자
    • 캐멀 케이스
// struct 예시
public struct Data {
    public byte age;
    public float hp;
    public string name;
}

// enum 예시
// 정수를 직접 대입하지 않으면 0부터 시작하여 1씩 증가
public enum eCOLOR
{
    NONE = -1,
    RED = 1,
    GREEN, 
    BLUE
}

6) 프로퍼티

  • Get, Set함수를 단순화 시킨 변수의 기능
  • Get,Set함수를 사용하지 않고 변수형식과 동일하게 사용할 수 있는 get,set 을 제공
    • 함수호출을 줄일 수 있음
private ushort index;
public ushort INDEX
{
    get { return index; }
    set { index = value; }
}

private string name;
// NAME변수는 get만 포함하므로 name변수를 읽어 올 수만 있다.
public string NAME
{
    get { return name; }
}

// 변수와 프로퍼티를 하나로 사용
public float dex { get; set; }
public float Intl { get; set; }

7) 접근한정자

  • public
    • 외부로 모두 공개
    • 상속 또한 모두에게 공개
  • private
    • 외부로 비공개
    • 상속시 자식에게 물려주지 않음
  • protected
    • 외부로 비공개
    • 상속시 자식에게 물려줌
  • internal
    • 동일한 어셈블리 파일내에서 액세스

8) 클래스

  • 클래스형 변수를 객체(인스턴스)라고 표현한다.
  • 참조타입임으로 new를 통해 메모리 할당을 받아야 사용할 수 있다.
  • 힙 메모리 영역에 저장된다.
  • this
    • 자기 자신을 가리킴
    • 자신의 클래스에서는 생략하여 사용
    • 변수의 구분이 모호한 상황이라면 this를 사용
public Monster(string _name, float _def)
{
    this.name = _name;
    this.def = _def;
}

9) 생성자와 소멸자

  • 생성자와 소멸자는 생략할 수 있음
  • 상속관계에서 생성자와 소멸자 호출 순서
    • 자식클래스를 생성하면 부모클래스의 생성자가 먼저 호출되고 자식클래스의 생성자가 나중에 호출된다.
    • 소멸 순서는 자식클래스가 먼저 소멸되고 부모클래스가 나중에 소멸된다
  • 생성자
    • 클래스의 인스턴스가 생성 될 때 한번 호출
    • 클래스 이름의 함수 형태와 유사
    • 매개변수를 전달 할 수 있음
    • 유니티기반 에서는 생성자와 소멸자를 이용하기 보다 유니티 이벤트 함수를 사용한다.
  • 소멸자
    • 클래스의 인스턴스가 메모리에서 소멸 될 때 한번 호출
// 생성자
public Monster() {}
public Monster(string name) {}
// 소멸자
~Monster() {}

10) 상속

  • 부모 클래스로 부터 데이터와 함수(기능)을 물려 받는 것
  • 부모클래스는 자식 클래스 에게 물려주고 싶은 것을 선택할 수 있음
  • 접근한정자에 의해 부모클래스는 상속할 내용을 결정함
  • C#은 다중상속을 지원하지 않는다.
  • C++은 다중상속을 지원한다.
public class Monster : MonoBehaviour {}
public class QuestMonster : Monster {}

public class A
{
    private int count;
    public string name;
}

public class B : A
{
    public void DisplayData()
    {
        Console.WriteLine(name); //(O)
        Console.WriteLine(count); //(X)
    }
}

11) 비트 연산자

  • 비트
    • 메모리의 최소단위
    • 컴퓨터 저장구조의 단위
    • 8bit = 1byte
  • 비트 연산자
    • ‘&’ (and) : 두개의 비트가 모두 1일 때, 1을 반환
    • ’|’ (or) : 두개의 비트 중 하나라도 1이면 1을 반환
    • ’-‘ (not) : 비트를 반전 (0을 1로, 1을 0으로)
    • ’«’ (shift) : 비트를 왼쪽으로 이동
    • ’»’ (shift) : 비트를 오른쪽으로 이동
    • ’^’ (XOR) : 두개의 비트가 서로 다를 경우 1을 반환
  • Convert를 사용하여 비트 값 출력하기
using UnityEngine;
using System;

public class BitExample : MonoBehaviour
{
    private void Start()
    {
        int number = 100;
        string bit = Convert.ToString(number, 2);
        Debug.Log("100의 비트값 : " + bit);
        int convertData = Convert.ToInt32(bit, 2);
        Debug.Log("문자비트를 정수로 변환 = " + convertData);
    }
}

컬러에서의 비트

  • 그래픽 이미지에서 사용되는 컬러
  • 한 픽셀을 표현하는데 사용되는 비트를 의미한다.
  • 32비트
    • Red 8비트, Green 8비트, Blue 8비트, Alpha 8비트
      • Alpha는 반투명 값
    • R8G8B8A8
  • 24비트
    • R8G8B8
  • 16비트
    • R4G4B4A4
  • 8비트

업데이트: