자료형 (Data Type)
이전에 < C# 개요 > 포스팅에서 언급했듯이, C#은 C, C++, Java를 베이스로 설계한 언어이므로 연산자, 문장 구조 및 의미는 모두 표준 C언어와 비슷하고 객체지향 특성은 C++, 자바와 유사하다.
객체 지향 프로그래밍(Object-Oriented Programming, OOP)을 한다는 것은, 모든 자료형을 객체형으로 취급한다는 의미이다.
이 전에 파이썬, C언어, 자바 등 다른 언어를 공부했다면, 위 그림을 쉽게 이해할 수 있을거다.
[ 값형식 ]
값형식(Value Type) : 값을 선언하고 바로 사용 가능. "new"를 통해 변수 생성해야 메모리 확보할 수 있음.
→ "new" 사용하면 생성자가 초훌되고 기본값으로 초기화됨.
값형식 종류에는 숫자형, 문자형, 논리형, 열거형, 구조체형이 있다.
숫자형은 정수형, 실수형으로 쪼개질 수 있다. 여기서 정수형에는 short(16bit), int(32), long(64)이 있고, 실수형에는 float(32), double(64)이 있다.
문자형: char(16bit)
논리형: bool (true/false)
열거형: enum (상수를 문자열로 대치하여 선언. 즉, 상수에 의미부여함.)
→ 열거형은 아래와 같이 3가지 방식으로 생성할 수 있다 :
enum 열거형명 { string a, string b }; // 변수 선언
enum 열거형명 { string a = 0 , string b = 2 }; // 변수 선언 및 초기화
enum 열거형명 { string a = 0 , string b };
→ 기본은 int형이지만 char형을 제외한 형식 지정 가능함: ex) enum Days : byte { Sun = 0, Mon, Tues, ... }
열거형 변수가 아닌 변수에 열거형 값을 대입할 때는 data type을 명시하기
구조체형: struct
public struct 구조체명 { }
→ 구조체 제한사항:
1) const, static 변수만 선언과 동시에 초기화 가능
2) 구조체 안에 선언할 수 있는 생성자는 매개변수가 반드시 있어야함
3) 구조체 구조체명 = new 구조체( ); (( ) 안에 비어있으면 0 값이 저장됨)
4) 구조체를 같은 구조체에 대입하면 값이 복사됨
5) struct는 값형식, class는 참조형식 (차이점: 구조체는 선언만으로도 바로 사용 가능)
6) 구조체는 구조체나 class에 상속할 수 없음
7) 구조체는 interface를 상속하여 메서드를 구현할 수 있음 (= 여러 개의 메서드를 통일시킬 수 있음)
이번에는 트리구조의 참조형 branch를 따라가보자.
[ 참조형식 ]
참조형식(Reference Type) : 값을 선언할 수 없음 ("new" 사용 불가). 대신 별명으로 선언.
→ 대입연산자(=)를 통해 값을 복사할 수 있음. 객체와 참조형 사이의 대입에서는 객체의 메모리주소를 복사함
참조형식 종류에는 class형, interface형, delegate형, 배열형, string형(문자열형)이 있다.
*자세한 내용은 아래의 용어들을 클릭하면 볼 수 있다 :)
✔배열형
[ 기타 Data Type ]
암시적 데이터형 var : 대입되는 데이터에 따라 데이터형 결정.
→ var를 사용할 수 없는 경우
1) null값 초기화, 매개변수로는 사용할 수 없음.
2) var는 지역변수로만 사용 가능. class멤버로는 사용할 수 없음.
3) 연속적으로 초기화하는 경우 (ex : var s = 10, s2 = 11)
nullable 형 : null을 허용하지 않는 데이터형이 null값을 허용.
→ 형식 : 데이터형? 변수명;
→ 속성(data가 null인지 아닌지 판별) :
.HasValue //true,false를 반환. null일경우 false.
.Value //읽기 전용
void : 값을 반환하지 않음