일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Windows 10 계정 안보임
- 자바 11
- 가성비 노이즈캔슬링
- Windows 10 계정 오류
- 86비트
- TT-BH090
- DATEPART 종류
- Windows 10 계정
- MSSQL DATE 함수
- Gc
- x32x64
- Java
- Java 11 설치
- SOUNDSURGE 90
- DATEPART 인수
- Java 11
- Java JDK 11
- Ajax
- 정보 정의
- 자바 11 다운로드
- 기본자료형
- 기타 사용자
- javascript
- Windows Java 환경 변수
- 자료 정의
- 윈도우 10 로그인
- 타오트로닉스 후기
- 윈도우 환경 변수
- 로컬 계정 전환
- 컴퓨터 몇비트
- Today
- Total
이감자의 개발새발 개발일지
[C#] 자료형 - 기본 제공 값 형식 본문
C#의 자료형은 Value Type(값 형식)과 Reference Type(참조 형식)으로 나뉜다.
Value Type(값 형식)
C#에서 제공하는 기본 Value Type의 자료형은 4가지로 정수형, 실수형, 논리형, 문자가 있으며, 자료형 별 접미어는 영문일 경우 대문자와 소문자를 구분하지 않는다.
자료형 | C# 형식 | 크기 | 접미어 |
논리형 | bool | ||
정수형 | byte | 8bit | |
short | 16bit | ||
int | 32bit | ||
long | 64bit | ||
실수형 | float | 32bit | F |
double | 64it | D | |
decimal | 128bit | M | |
문자 | char | 16bit(Unicode Type) | '' |
정수형은 부호가 없는 값의 경우 C# 형식 앞에 u를 붙여 사용할 수 있으며, 항상 0 이상의 값이 지정되어야 한다.
부호가 없는 정수형 | |||
자료형 | C# 형식 | 크기 | 접미어 |
정수형 | ushort | 16bit | |
uint | 32bit | U | |
ulong | 64bit | UL |
값 형식의 특징은 다음과 같다.
- 값 형식의 변수에 null을 할당할 수 없다.
- 상속이 불가능하다.
값 형식 변수는 해당 변수에 값을 할당할 때, 인수를 메서드에 전달할 때(parameter로 값을 전달할 때), 메서드에서 값을 return할 때 복사한다. 인수와 parameter로 변수 값을 전달할 때 변수 자체를 주고 받는 것이 아니라 변수의 값을 복사하여 주고 받는다.
Nullable Type
앞서 Value Type의 특징으로 변수에 null 값을 할당할 수 없다고 서술하였는데, 필요한 경우 Nullable Type을 사용하면 null값을 할당할 수 있다. Nullable Type의 사용법은 다음과 같다.
int? i = null;
Nullable Type은 .NET의 Nullabel<T> 구조체로, 컴파일 시 변환되어 int?는 Nullable<int>와 동일하게 변환된다. 변수의 값이 null인지는 HasValue()를 통해 확인할 수 있다.
Reference Type
Reference Type은 데이터를 직접 저장하는 것이 아닌 데이터가 저장된 메모리 공간의 주소값을 저장하는 형식이다. 참조 형식이라 부르기도 한다. 참조 형식에는 string, object, dynamic이 있다.
string은 문자열을 담을 수 있는 자료형이다. string은 문자를 배열 형태로 저장하기 때문에 다음과 같이 응용할 수 있다.
string s = "programming";
char c = s[0];
Console.WriteLine(c);
//output: p
string은 한 번 값이 할당되면 그 값을 변경할 수 없다.
string s = "hello world";
s = "c# programming";
이와 같이 값을 변경하고자 코드를 작성하면 'hello world'라는 문자열이 'c# programming'으로 변경되는 것이 아니라, 메모리를 새롭게 할당해 'c# programming'이라는 문자열을 저장한 뒤 변경된 Reference를 s 변수에 저장한다. 참조 형식 변수와 연결이 되지 않은 메모리 영역은 가비지 컬렉터가 자동으로 메모리 할당을 해제한다.
'개발새발🐶 > 기타' 카테고리의 다른 글
자료구조의 정의 (0) | 2021.08.24 |
---|---|
JavaScript 비동기 처리와 콜백 함수에 대하여 (1) | 2020.10.27 |
Ajax와 Ajax 옵션 정리 (1) | 2020.10.26 |