728x90

C#은 다양한 종류의 데이터 형식을 제공한다.

"이것이 C#이다" 에서는 [ 기본 데이터 형식, 상수, 열거형]에 대해서 다룬다.

 

변수 : "데이터를 담는 일정 크기의 공간"

표현방식으로는 변수를 선언한다 라고 합니다.

 

int x;// int : 데이터 형식 , x : 식별자(변수의 이름)

 

값 형식 / 참조 형식

값, 참조 형식을 구분하는 것은 코딩할때 정말 중요하다고 생각한다.

값 형식은 변수가 값을 담는 데이터 형식을 말하고, 참조 형식은 변수가 값 대신 값이 있는 곳의 위치를 담는 데이터 형식이다.

 

스택 & 값 형식

탑 처럼 아래부터 차곡차곡 쌓는 방식이 stack이라고 하는데 값 형식 데이터는 이런 stack memory에 적재된다.

 

힙 & 참조 형식

- CLR의 가비지 컬렉터가 알아서 쓰레기 처리해준다

- 코드 블록이 끝나는 시점과 상관없이 데이터를 유지하고 싶을때 사용

 

1. 숫자 데이터 형식

  정수 계열 형식

    byte, sbyte, short, ushort, int, uint, long, uling, char

2. 부동 소수점 형식

  float, double, decimal

3. 문자 형식과 문자열 형식

  string -> "" char -> ''

4. 논리 형식

  bool : 1bit로 표현 가능하지만, 컴퓨터 기본적으로 다루는 데이터의 크기가 바이트 단위이기 때문에 1비트만 저장하려 해도 1byte가 사용된다.

5. object 형식

  모든 데이터 형식의 조상, 모든 데이터 형식 object 형식으로부터 상속받는다.

6. 박식과 언박싱

  object o = 20; // 박싱 -> object 형식에 값 형식 데이터를 할당하려고 하면 object 형식은 박싱을 수행해서 해당

                                   데이터를 힙에 할당한다.

  int b = (int)o // 언박싱-> 박싱 된 값을 꺼내 값 형식 변수에 저장 하는 과정

 

상수와 열거 형식

상수 : const 키워드 사용, 선언 후에 데이터를 변경할 수 없다.

열거 형식 : enum 키워드 사용

enum 열거 형식명 : 기반자료형{상수1, 상수2, 상수3, ...}

enum TodayMenu { 햄버거, 피자, 짜장면, 떡볶이 } // 기본 int 기반자료형으로 사용

기반자료형은 위에 정수 계열 형식 사용 가능.

TodayMenu menu = TodayMenu.피자; 

enum TodayMenu { 햄버거 = 5000, 피자 = 18000, 짜장면=8000, 떡볶이=3500 };

이렇게 직접 지정해서 사용할 수 있다.

그럼 음.. 예를 들면

Console.WriteLine($"오늘의 메뉴 :{TodayMenu.햄버거.ToString()}는 {(int)TodayMenu.햄버거}원 입니다.");

이런 식으로 유용? 하게 사용할 수 있다.

 

Nullable 형식

코딩을 하다 보면 어떤 값도 가지지 않는 변수가 필요할 때가 있다.

이런 경우, 변수에게 할당된 메모리 공간을 비워둘 수 있도록 Nullable 형식을 사용한다.

데이터형식? 변수이름;

int? a = null;

float? b = null;

Nullable 형식은 HasValue와 Value 두 가지 속성을 갖고 있다.

 

형식이 너무 많아!!! var

컴파일러가 알아서 할당해주지만 항상 초기화해줘야 한다! 지역 변수로만 사용 가능하다!

(근데 C#은 전역 변수가 없다고 한다.) 그럼 초기화만 잘해주면 되겠지?

 

공용 데이터 형식

다른 언어와 같이 사용 가능하다고 한다.

코딩하다 보면 Byte, Int32, Int64 이런 걸 볼 수 있다. 

System.Byte, System.Int32, System.Int64 는 C#에서는 byte, int, long

C++에서는 char, int 혹은 long, __int64 이렇게 쓰인다

 

그럼 C#에서 쓰이는 char은 C++에서는 wchar_t 이렇게 쓰인다고 한다. 신기하네... 역시 C++ 보다는 C#이 편하다.

공용 데이터 형식을 확인하려면 변수.GetType()을 이용하여 호출 가능하다.

 

문자열 다루기

문자열은 정말 많이 쓰인다. 나 같은 경우에는 화면을 구성할 때 문자열을 나누고, 합치고, 부분 자르고, 뒤에다 붙이고 등등 많이 써서 어느 정도는 외우고 있지만 한번 표로 정리해서 책상에다 붙여두고 써야겠다.

LIST

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

[#1] Hello world c# 9.0  (2) 2021.05.25
728x90

Consol오늘부터 C# 일기를 써볼까합니다.

 

알고리즘은 C++을 사용하는데 쓰다보니까 C#이 참 편하긴 하다

 

아무튼 얼마전에 새로 구입한 "이것이 C#이다", "프렉티컬 C#" 두권의 책 공부할겸 기록할겸...

 

내 글이 누군가에게 도움이 되면 좋겠다.


MainApp.cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;
using static System.Console;
 
namespace Hello
{
    class MainApp
    {
        static void Main(string[] args)
        {
            if(args.Length==0)
            {
               WriteLine("사용법 : Hello.exe <이름>");
                return;
            }
        }
    }
}
cs

1. using System;

using은 System이라는 namespace를 불러오는 예약어! 따라서 변수명으로 사용하면 에러!

 

2. using static System.Console;

using은 키워드만 사용하면 네임스페이스 전체를 사용한다는 의미지만 using static은 어떤 데이터 형식의 정적 멤버를 데이터 형식의 이름을 명시하지 않고 참조하겠다고 선언하는 기능.

따라서 Console.WriteLine(); 으로 쓸것을 WriteLine(); 이라고 쓸 수 있다.

 

3. namespace Hello {  }

네임스페이이스는 성격이나 하는 일이 비슷한 클래스, 구조체, 인터페이스, 대리자, 열거 형식 등을 하나의 이름 아래 묶는 일을 한다.

 

4. class.MainApp {  } 

클래스는 C# 프로그램을 구성한는 기본 단위로서 데이터와 데이터를 처리하는 기능으로 이루어진다.

 

5. static void Main(string[] args) {   }

프로그램의 진입점으로 프로그램을 시작하면 실행되고, 이 메소드가 종료되면 프로그램도 종료된다.

C# 프록그램의 각 요소는 코드가 실행되는 시점에 메모리에 할당되는 반면, static 키워드로 수식되는 코드는 프로그램이 처음 구동될 때부터 메모리에 할당된다.

LIST

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

[#2] 데이터 C#  (1) 2021.05.25

+ Recent posts