C# - 기본 개념, 값 형식과 변수, 데이터 타입, 리터럴 타입

반응형

C#

  • C언어에서 비롯된 객체 지향 언어 (Object-Oriented Programming, OOP)
  • 자바와 같이 가비지 컬렉터(Garbage Collector)를 사용하여 자동으로 메모리를 관리
    • 가비지 컬렉터 : 자동으로 메모리를 관리해주는 기법
  • 닷넷(.NET)기반 프로그래밍 언어

형식 및 변수 (Types & Variables)

  • 형식
    • C# 내 모든 데이터의 구조와 동작을 정의
    • 형식 선언에는 해당 멤버, 기본 형식, 구현하는 인터페이스 및 해당 형식에 허용되는 작업이 포함 될 수 있음
  • 변수 : 특정 형식의 인스턴스를 참조하는 레이블
    • 값 형식의 변수 : 해당 데이터가 직접 포함
      • 변수가 자체적으로 데이터 사본을 갖고 있음
      • 한 변수에 대한 작업이 다른 변수에 영향을 미칠 수 없음 (ref, out 매개 변수 제외)
    • 참조 형식의 변수 : 객체 데이터에 대한 참조가 저장
      • 두 개의 변수가 같은 객체를 참조 할 수 있음
      • 한 변수에 대한 작업이 다른 변수에서 참조하는 객체에 영향을 미칠 수 있음
    • 식별자 (Identifier)
      • 변수 이름, 공백이 없는 유니코드 문자 시퀀스
      • @ 접두사가 있으면 C# 예약어 일 수 있음

값 형식 (Value Types)

  • 단순 형식 (Simple Types)
    • 부호 있는 정수(Signed Integral) : sbyte, short, int, long
    • 부호 없는 정수(Unsigned Integral) : byte, ushort, uint, ulong
    • 유니 코드 문자(Unicode Characters) : UTF-16 단위의 char
    • 부동 소수점(IEEE Binary Floating-point) : float, double
    • 고정 소수점(High-precision Decimal Floating-point) : decimal
    • 부울(Boolean) : bool
  • 열거 형식 (Enum Types)
    • enum E {...} 의 사용자 정의 형식 : enum
      • 명명된 상수가 있는 고유한 형식
      • 8가지 정수 형식 중 하나의 내부 형식을 갖음
      • enum 형식의 값 집합은 내부 형식의 값 집합과 동일
  • 구조체 형식 (Struct Types)
    • struct S {...} 양식의 사용자 정의 형식
  • Nullable 값 형식 (Nullable Value Types)
    • null 값을 갖는 다른 모든 값 형식의 확장
    • 별도의 정의가 필요하지 않음
  • 튜플 값 형식 (Tuple Value Types)
    • (T1, T2, ...) 양식의 사용자 정의 형식

참조 형식 (Reference Types)

  • 클래스 형식 (Class Types)
    • 다른 모든 형식의 기본 클래스 : object
    • 유니코드 문자열 : UTF-16 단위의 시퀀스
    • class C {...} 양식의 사용자 정의 형식
  • 인터페이스 형식 (Interface Types)
    • interface I {...} 양식의 사용자 정의 형식
  • 배열 형식 (Array Types)
    • 1차원 배열 : 예) int[]
    • 다차원 배열 : 예) int[,]
    • 가변 배열 : 예) int[][]
  • 대리자 형식 (Delegate Types)
    • delegate int D(...) 양식의 사용자 정의 형식

형식 선언

  • 새 형식의 이름과 멤버를 지정
  • 사용자 정의가 가능한 6가지 형식
    • 클래스 형식 (Class types)
      • 데이터 멤버(필드) 및 함수 멤버(메서드, 속성 및 기타)를 포함하는 데이터 구조를 정의
      • 단일 상속 및 다양성과 파생된 클래스가 기본 클래스를 확장
    • 구조체 형식 (Struct types)
      • 데이터 멤버 및 함수 멤버로 구조체를 나타내는 클래스 형식과 유사
      • 클래스와 달리 구조체는 값 형식이며 일반적으로 힙 할당이 필요하지 않음
      • 사용자 지정 상속을 지원하지 않으며 객체(object) 형식으로부터 암시적 상속
    • 인터페이스 형식 (Interface types)
      • 계약을 공용 멤버의 명명된 집합으로 정의
      • 구현하는 클래스(class) 또는 구조체(struct)는 인터페이스의 멤버 구현을 제공해야 함
      • 여러 기본 인터페이스에서 상속 될 수 있음
        • 클래스 또는 구조체는 여러 인터페이스를 구현 할 수 있음
    • 열거형 형식 (Enum types)
    • 대리자 형식 (Delegate types)
      • 특정 매개 변수 목록 및 반환 형식이 있는 메서드에 대한 참조를 나타내는 형식
      • 메서드를 변수에 할당되고 매개 변수로 전달될 수 있는 엔티티로 취급
      • C언어의 포인터와 비슷하지만 멤버 함수에 대해 객체 지향적임
    • 튜플 값 형식 (Tuple value types)
    • + 레코드 형식(record), 레코드 구조(record struct) 또는 레코드 클래스(record class)를 선언 할 수 있음
      • 레코드 : 주로 연결된 동작을 최소화하면서 값을 저장하는데 사용

데이터 타입 (Data Types)

기본 제공 형식

 정수 (Integer)

  • 부호 있는 정수 (Signed Integer)
    • sbyte : 1바이트
    • short : 2바이트
    • int : 4바이트
    • long : 8바이트
  • 부호 없는 정수 (Unsigned Integer)
    • byte : 1바이트
    • ushort : 2 바이트
    • uint : 4바이트
    • ulong : 8바이트

소수점 (Floating-point)

  • 부동 소수점
    • float : 4바이트
    • double : 8바이트
  • 고정 소수점
    • decimal : 16바이트

문자/문자열 (Character/String)

  • char : 2바이트의 유니코드 문자
  • string : 크기가 정해져 있지 않은 문자열 객체

불린 (Boolean)

  • bool : 1바이트 (True or False)

리터럴 타입 (Literal Types)

  • 리터럴(Literal) : 코드에 123, "ABC"와 같이 직접 값을 정의하는 것
  • 리터럴 데이터 사용시 별도의 접미어가 없을 경우 컴파일러는 기본적으로 리터럴 타입을 할당
  • 디폴트 리터럴 타입 (Default literal types)
    • 정수 : int (예: 123)
    • 실수 : double (예: 12.3)
    • 문자열 : string (예: "A")
    • 문자 : char (예: 'a')
    • 불 : bool (예: true)

데이터 타입 사용 예시

// Bool : true or false
bool b = true;

// 숫자
short sh = -32768;   
int i = 2147483647;  
long l = 1234L;      // L 접미사, int가 아닌 long 타입 선언
float f = 123.45F;   // F 접미사, double이 아닌 float 타입 선언
double d1 = 123.45;  // 디폴트 리터럴 값
double d2 = 123.45D; // D 접미사
decimal d = 123.45M; // M 접미사, double이 아닌 decimal 타입 선언

// 문자/문자열
char c = 'A';
string s = "Hello";

// 시계열
// DateTime  2023-01-30 01:31
DateTime dt = new DateTime(2023, 01, 30, 01, 31, 0);

참고

Microsoft C# 가이드 - C# 언어 둘러보기

 

C# 둘러보기 - 개요

C#을 처음 사용하시나요? 언어의 기본 사항에 대해 알아봅니다. 이 개요에서 시작합니다.

learn.microsoft.com

 

Microsoft C# 가이드 - 기본 제공 형식

 

기본 제공 형식- C# 참조

C# 기본 제공 값 및 참조 형식 배우기

learn.microsoft.com

 

 

csharpstudy.com - C# 데이타 타입

 

C# 데이타 타입 - C# 프로그래밍 배우기 (Learn C# Programming)

C# 데이타 타입 C#을 포함한 모든 .NET 프로그래밍 언어는 .NET의 Common Type System에 정의된 .NET 데이타 타입을 사용한다. C#은 int, double, string 과 같은 C# 키워드로 데이타 타입을 표현할 수 있으며, 또

www.csharpstudy.com

 

 

반응형