-
[C# 기본] 2. 데이터형C#/강의 | Lecture 2018. 11. 28. 15:57
1. 기본 데이터형
1-1. C#의 데이터형은 object로부터 파생된 객체
- int a; // a는 변수 이면서 int형 객체이므로 int와 관련된 메서드, 변수 사용 가능
1-2. object는 System.Object를 말함
1-3. 정수형 : bool, int, long, short, char, byte
- int == System.Int32, 4byte
- long == System.Int64, 8byte
- char == System.Char, 2byte (유니코드)
- bool == System.Boolean , C/C++과 다르게 true, false 키워드로 할당되고, 1byte
- byte == System.Byte, 1byte
1-4. 실수형 : float, double
- float == System.Single, 4byte
- double == System.Double, 8byte
1-5. 문자열형 : string == System.String
- '+' operator로 문자열 연결 가능
- '==' operator로 문장려 비교 가능
- 대괄호를 이용해서 인덱스 접근 가능
2. 암시적 데이터형 var
2-1. 대입되는 데이터에 따라 데이터형 결정
2-2. null 값 초기화 및 매개변수로는 사용 하지 못함
2-3. var는 지역변수로만 사용, 클래스 멤버로는 사용 못함
3. null 값을 허용하는 nullable형
3-1. null을 허용하지 않는 데이터형이 null값을 허용하게 함
3-2. 사용 형식은 데이터형? 변수명;
- int? var1;
- bool? var2; // true, false, null
3-3. HasValue라는 속성을 이용해서 null인지 아닌지 확인 가능
4. 데이터 변환
4-1. 기본 데이터형을 문자열로 변환할때는 ToString() 메서드 사용
4-2. 문자열을 기본 데이터형으로 변환할때는 Parse() 메서드와 Convert 클래스 사용
- float value1 = float.Parse("3.14"); // Parse() 메서드
- int value2 = Convert.ToInt32("100"); // Convert 클래스
5. 박싱(boxing)과 언박싱(unboxing)
5-1. 데이터 형은 object로 부터 상속받아서 만들어짐
5-2. 박싱(boxing)은 데이터 형을 최상위 object 형으로 변환하여 힙메모리에 저장
- 메모리 공유하지 않음
- int m = 123;
object obj = m;
5-3. 언박싱(unboxing)은 힙에 저장된 형식을 다시 원래의 형식으로 변환
- int n = (int)obj;
6. 표준 입력
6-1. 한 문자 정보를 입력 받는 메서드로 Console.ReadKey()
- static 멤버함수로 선언되어있음 (객체 생성없이 바로 사용가능)
6-2. 입력된 키를 ConsoleKeyInfo.Key로 확인 가능
6-3. 엔터키가 눌려질때까지 문자열을 입력받는 Console.ReadLine() 메서드
- 입력 받은 문자열을 숫자로 활용할때는 Convert.ToInt32 사용
7. 사용자 지정형 - 구조체(struct)
7-1. 구조체의 형식은 아래와 같음
- public struct 구조체명
{
public static int age = 12; // 외부에서 선언 없이 접근 가능
public const float PI = 3.14f; // 외부에서 선언 없이 접근 가능
public int val; // 일반 멤버 변수는 초기화 불가능
}
7-2. 선언 형식은 아래와 같음 (구조체명이 MyStruct라 가정)
- MyStruct TestStruct1;
- MyStruct TestStruct2 = new MyStruct(); // 기본 생성자 호출
- MyStruct TestStruct3 = new MyStruct(10); // 매개변수가 있는 생성자가 있을 경우
7-3. 구조체가 new로 생성 될 경우 멤버 변수는 생성과 동시에 모두 0으로 초기화
- new로 생성되지 않을 경우 멤버 변수는 값을 지정해주어야 함
7-4. 구조체에 선언된 const, static 변수만 초기화 가능
- 구조체에 선언된 const, static 변수는 외부에서 구조체 변수 선언없이 접근 가능
7-5. 구조체 안에 선언할 수 있는 생성자는 매개변수가 반드시 존재
- 매개 변수가 없는 기본 생성자는 자체적으로 존재
7-6. 구조체를 같은 구조체에 대입(=)하게 되면 값이 복사
7-7. 구조체는 값 형식이고, 클래스는 참조 형식 (대입 연산자에 대해)
- MyStruct Test1 = new MyStruct();
MyStruct Test2 = Test1; // 값이 복사되고, 서로 다른 구조체가 됨
- MyClass Test3 = new MyClass();
MyClass Test4 = Test3; // 참조가 되는 형태로 Test4는 Test3의 별명으로 설정
7-8. 구조체는 구조체 또는 클래스에 상속할 수 없음
- C++의 구조체는 상속이 가능하지만 가능하면 쓰지 않는 것이 좋음
- C#에서는 구조체의 상속을 제한
7-9. 구조체는 인터페이스를 상속하여 메서드 구현 가능
8. 값 형식과 참조 형식
8-1. 선언은 초기값을 정해주어야 하며, 생성(new)은 0으로 초기화 됨
- int nVal1 = 12; // 선언
int nVal2 = new int(); // 생성, nVal2는 0으로 초기화
8-2. 참조 형식은 한 객체를 참조형 변수가 사용 할 때, 참조형에 의해 내용이 바뀌면 객체에 영향을 미침
- 대입 연산자에 의해 참조가 되는 형태는 class, interface, delegate, 배열
- 객체와 참조형 사이의 대입은 객체의 메모리 주소가 복사
8-3. 값 형식은 기본 데이터형, struct, enum
'C# > 강의 | Lecture' 카테고리의 다른 글
[C# 기본] 6. 클래스 (0) 2018.11.29 [C# 기본] 5. 파일입출력 (0) 2018.11.29 [C# 기본] 4. 배열 (0) 2018.11.29 [C# 기본] 3. 기본 문법 (0) 2018.11.29 [C# 기본] 1. 개요 (0) 2018.11.27 댓글