언어/C#

C#. 2

에린_1 2024. 7. 15. 15:55
728x90

C#

C# 데이터 형식

  • 기본 데이터 형식(Primitive Type)
  • 복잡 데이터 형식(Complex Data Type)

  • 값 형식
  • 참조 형식

변수(Variable)

  • 데이터를 담는 일정 크기의 공간
  • 초기화(Initalization)
    • 변수에 최초의 데이터를 할당하는 것을 의미한다. C언어나 C++에서는 변수를 선언한 후 아무 데이터도 입력하지 않으면 이 변수에 ‘쓰레기 데이터’가 들어간다. 프로그래머가 쓰레기 데이터를 담고 있는 변수를 그대로 사용하면 소프트 웨어가 엉뚱하게 동작하곤 한다.
    • C#은 이런 문제를 미연에 방지하도록 초기화를 강제한다.
  • 리터널(Literal)
    • 컴퓨터 과학에서 리터널은 고정값을 나타내는 표기법을 말한다.

값 형식과 데이터 형식

  • 값 형식(Value Type)은 변수가 값을 담는 데이터 형식이다.
  • 참조 형식(Reference Type)은 변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식을 말한다.

C# 기본 데이터 형식

숫자 데이터 형식

  • 정수 계열 형식 (Integer Type)
    • 정수 데이터를 담기 위해 사용한다.
    • byte
    • sbte
    • short
    • ushort
    • int
    • uint
    • long
    • ulong
  • 부동 소수점 형식 (Floating Point Type)
    • 부동 소수점 형식이 정수 형식을 대체하지 못하는 이유
      1. 부동 소수점 형식은 소수점을 표현하기 위해 일부 비트를 사용하기 때문에 같은 크기의 정수 계열 형식과 같은 크기의 수를 표현할 수 없다.
      2. 부동 소수점 형식은 산술 연산 과정이 정수 계열보다 복잡해서 느리다.
    • float 단일 정밀도 부동 소수점 형식
    • double 복수 정밀도 부동 소수점 형식
    • C#의 float 와 double은 IEEE754 라는 표준 알고리즘에 기반한 데이터 형식이다. 부동 소수점 형식에는 float와 double 두 가지가 있지만, float보다는 double을 사용하는 것을 권한다. double이 float에 비해 메모리를 두 배로 사용하지만 그만큼 float에 비해 데이터 손실이 적기 때문이다.

Decimal 형식

  • 실수를 다루는 데이터 형식
  • decimal 29 자리 데이터를 표현할 수 있는 소수 형식
  • 16 바이트

문자 형식과 문자열 형식

  • char 형식은 정수를 다루는 데이터 형식 출신이지만, 수가 아닌 문자 데이터를 다룬다. 작은 따옴표( ‘ ‘ )로 문자를 감싸줘야 한다.
  • string 형식은 문자들을 다루는 데이터 형식이다.
    • 정해진 크기나 담을 수 있는 데이터 범위가 따로 정해져 있지 않다. 변수가 담는 텍스트의 양에 따라 그 크기가 달라진다.
    • string 형식의 변수는 문자열 데이터를 큰 따옴표(” “)fh anRdj 담는다.
  • 문자열 하나에 여러 줄을 담기 위해서는 이스케이프 문자를 사용해야 한다. \n은 줄 바꿈 new line을 나타내는 이스케이프 문자로서, 문자열 사이에 입력하면 해당 이스케이프 문자 뒤에 따라오는 문자열은 다음 줄에 표시된다.
  • 큰 따옴표를 세 개 붙여 쓰면(’’’ … ‘’’) 이스케이프 문자의 도움 없이도 여러 줄로 이어진 문자열 리터럴을 만들 수 있다.

논리 형식 Boolean Type

  • 참(true), 그리고 거짓(false) 두 가지 데이터를 다룬다.

Object 형식

  • object는 물건 객체라는 뜻이다. object 형식은 어떤 물건이든 다룰 수 있는 데이터 형식이다. 모든 데이터 형식이 자동으로 object 형식으로 부터 상속 받게 되어있다.

박싱과 언박싱

  • object 방식은 참조이기 때문에 힙에 데이터를 할당한다.
  • object 형식은 값 형식의 데이터를 힙에 할당하기 위한 ‘박싱’(boxing) 기능을 제공한다. object 형식에 값 형식의 데이터를 할당하려는 시도가 이루어지면 object 형식은 박싱을 수행해서 해당 데잍터를 힙에 할당한다.
  • 힙에 있던 값 형식 데이터를 값 형식 객체에 다시 할당해야 하는 경우 박식된 값을 꺼내 값 형식 변수에 저장하는 과정을 일컬어 ‘언박싱’(unboxing) 이라고 한다.

데이터 형식 바꾸기

  • 변수를 다른 데이터 형식의 변수에 옮겨 담는 것을 형식변환(type conversion)이라고 한다.
  • 형식변환
    • 크기(표현 범위)가 서로 다른 정수 형식 사이의 변환
    • 크기(표현 범위)가 서로 다른 부동 소수점 형식 사이의 변환
    • 부호있는 정수 형식과 부호없는 정수 형식 사이의 변환
    • 부동 소수점 형식과 정수 형식 사이의 변환
    • 문자열과 숫자 사이의 변환

상수와 열거형식

  • 상수(constant)와 열거형식(enumerator)는 변수와 달리 안에 담긴 데이터를 절대 바꿀 수 없는 메모리 공간이다.
  • 열거 형식에서 기반 자료형은 정수 계열만 사용할 수 있으며, 생략할 경우 컴파일러가 int를 기반 자료형으로 사용한다.

Nullable 형식

  • 비어있는 상태가 될 수 있는 형식
  • 데이터 형식? 변수이름; 로 선언한다.
    • 데이터 형식 이름 뒤에 ‘?’를 붙여준다.
  • nullable 형식을 사용할 수 있는 경우는 값 형식에 한해서 이다. 참조 형식은 사용할 수 없다.
  • 모든 nullable 형식은 hasvalue와 value 두 가지 속성을 갖고 있다.
    • hasvalue : 해당 변수가 값을 가지고 있는지
    • value : 변수에 담겨 있는 값

var 데이터 형식을 알아서 파악하는 똑똑한 C# 컴파일러

  • C#은 변수나 상수에 대해 깐깐하게 형식 검사를 하는 강력한 형식의 언어이다.
  • C#은 강력한 형식 검사를 하는 언어이지만, var 키워드를 통해서 약한 형식 검사를 하는 언어의 편리함도 지원한다.
  • 단, var 키워드를 이용해서 변수를 선언하려면 반드시 선언과 동시에 초기화까지 해줘야 한다.
  • var은 지역 변수로만 사용할 수 있다.
728x90

'언어 > C#' 카테고리의 다른 글

리플렉션  (0) 2024.07.31
C#5. 인터페이스, 추상 클래스, 프로퍼티, 컬렉션  (1) 2024.07.18
C#4. 메소드, 클래스, 접근한정자, 상속  (0) 2024.07.17
C#3. 조건 연산자, 패턴  (0) 2024.07.16
C#. 1  (0) 2024.07.11