1. 데이터형
기본 데이터형
- C#의 데이터형 object로부터 파생된 객체
CTS
(Common Type System)에서 정의된 객체
정수형
키워드 | 클래스 | 용량 |
---|
byte | System.Byte | 1 byte |
sbyte | System.SByte | 1 byte |
short | System.Int16 | 2 byte |
ushort | System.UInt16 | 2 byte |
int | System.Int32 | 4 byte |
uint | System.UInt32 | 4 byte |
long | System.Int64 | 8 byte |
ulong | System.UInt64 | 8 byte |
실수형
- C#의 float는 클래스가
System.Single
이다.
키워드 | 클래스 | 용량 |
---|
float | System.Single | 4 btyte |
double | System.Double | 8 btyte |
decunak | System.Decimal | 16 btyte |
문자(열)형
- C#의 문자형(char)는
2 byte
이고 ''
로 정의한다.
- 문자열형은
""
로 정의한다
string a = "Hello World";
- 문자열 출력 추가내용
- '\' 출력 방법
- @"C:\aaa\aaa\aaa.exe"
- "C:\aaa\aaa\aaa.exe"
키워드 | 클래스 | 용량 |
---|
char | System.Char | 2 byte |
string | System.String | - |
bool 형
키워드 | 클래스 | 용량 |
---|
bool | System.Boolean | 1 byte |
var 키워드
- 대입되는 데이터에 따라 데이터형 결정
- ex.
foreach(var i in Array){내용;}
- 사용할 수 없는 예
- null값 초기화, 매개변수X
- only 지역변수, 클래스 멤버X
- 연속적으로 초기화하는 경우
var vs object
- var를 사용해서 데이터형이 지정되면 변경 불가능
- object는 변경가능, 하지만 boxing & unboxing이 필요함
- boxing&unboxing 정리파트 이후에 작성예정
2. 변환
기본데이터형.ToString()
<=> 기본데이터형.Parse()
- Convert.ToInt32()
- Convert.ToSingle()
Convert.ToXXXXX()
3. 표준 입력
표준 입력
- 참조 : 표준입력-공식문서
Console.ReadKey()
public static ConsoleKeyInfo ReadKey(bool intercept)
- true: 화면출력안함
- false: 화면출력(default)
- ConsoleKeyInfo
- 키의 문자와 Shift, Alt, Ctrl 등 보조키 상태 포함
- ConsoleKeyInfo.Key: 입력된 키 위치 확인
- ConsoleKeyInfo.KeyChar: 대소문자 구분 키 확인
Console.WriteLine("ESC를 누르면 종료합니다");
ConsoleKeyInfo KeyInfo;
do
{
KeyInfo = Console.ReadKey(true);
if (KeyInfo.Key == ConsoleKey.A)
Console.WriteLine("A를 입력했습니다");
} while (KeyInfo.Key != ConsoleKey.Escape);
4. 사용자 지정형
- struct, enum, class, interface 중 class와 interface는 나중에 배움으로 생략
struct
- 제한사항
- 구조체에 선언된 const, static 변수만 초기화 가능
- 구조체 안에 선언할 수 있는 생성자는 매개변수가 반드시 있어야 함
- 구조체를 같은 구조체에 대입하게 되면 값이 복사
- 구조체는
값 형식
이고 클래스는 참조 형식
- 값 형식이므로 선언만으로 사용 가능
- new를 사용하면 생성자가 호출되어 기본값으로 초기화 됨
- 구조체 또는 클래스에 상속X
- 인터페이스를 상속하여 메서드 구현 가능
접근지정자 struct 구조체명
{
}
enum
- 상수를 문자열로 대치하여 선언
- enum 열거형 명칭 {문자열1, 문자열2};
- 문자열1=10으로 설정하면 다음 데이터는 1씩 증가
enum Days {Sun, Mon, ..., Sat};
- 기본은 int형이지만 char형을 제외한 형식 지정가능
enum Days:byte{Sun=0, Mon, Tue, ... , Sat};
- 열거형 변수가 아닌 변수에 열거형 값을 대입할 때는 데이터형을 명시할 것
5. 값 형식과 참조 형식
스택(Stack)
- 고정된 크기(정적)의 메모리
- 데이터를 쌓아올리는 구조의 메모리
- 데이터 처리 방식 :
Last-In-First-Out(=후입선출)
값 형식
- 메모리에 값을 담는 데이터 형식
- 스택에 할당(즉, 자동으로 제거됨)
지역변수가 stack에 할당됨
, 메서드 호출이 완료되면 스택 메모리가 자동으로 회수
되고 값이 제거됨
- 기본데이터 형식과 구조체가 여기에 해당됨
큐(Queue)
- C#에서 큐의 사용은 선택적
- 데이터 처리 방식 : First-In-Fist-Out(=선입선출)
힙(Heap)
- 유동적 크기(동적)의 메모리
- 자유롭게 데이터를 저장할 수 있는 메모리
참조 형식
heap
에 데이터를 저장하고 해당하는 메모리를 참조하는 방식
- 처음 변수만 선언하면 값 형식과 달리 메모리가 할당되지 않음
- 힙에 할당(
가비지 콜렉터에 의해 제거됨
)
- 배열, 클래스, 인터페이스, 델리게이트, 문자열, Object 등이 여기에 해당
Boxing&Unboxing
6. 정리
- 기본 데이터형과 CTS 형식을 익혀둔다.
- 데이터형에 관한 검증 코드를 작성해보자.
- 값 형식과 참조 형식의 차이점을 이해하자.
구분 | 설명 |
---|
값 형식 | 기본 데이터형, struct, enum |
참조 형식 | class, interface, delegate, array, string |
7. Reference