사용자 정의형 데이터
내장형 데이터와 달리 사용자가 직접 데이터형을 정의한다. 열거형(enum)과 구조체(struct)가 있다.
- 열거형
정수형 상수 그룹을 만들 때 사용한다. 열거형의 각 상수에는 서로 관련있는 설명식 이름이 붙여진다.
상수 대신 의미있는 이름을 사용하기 때문에 코드의 의미가 명확해져 논리적 오류를 줄일 수 있다.
enum [식별자] {
MemberName_1,
MemberName_2,
...
}
정의된 열거형 상수는 점표기법을 이용하여 [식별자].MemberName으로 표현한다.
// 열거형 UserType 정의 : A 부분에 코딩
enum UserType {
Admin, // 값을 지정하지 않을 경우 0이 할당
Master, // 0 다음 정수 1이 할당
Guest = 5, // 값이 지정되어 UserType.Guest는 상수 5가 할당
Invalid // 5 다음의 정수 6이 할당
}
protected void Page_Load(object sender, EventArgs e) {
// 사용자 정의형 변수 선언과 초기화 : B 부분에 코딩
UserType siteUserType = UserType.Guest;
ShowResult(siteUserType + " = " + (int)siteUserType);
}
이 코드는 이전 글에서 코드 블럭에 A 부분, B 부분이 써있는 프로젝트에 입력하면 된다.
- 구조체
여러 데이터형으로 이루어지ㅓㄴ 데이터들을 하나로 묶어 관리할 때 사용한다.
// 구조체 선언 : A 부분에 코딩
public struct Dog {
public string Name;
public string Breed;
public Dog(string name, string breed) { // 생성자
Name = name;
Breed = breed;
}
public string Introduce() { // 메서드
return "이름 : " + Name + "(" + Breed + ")";
}
}
// 사용자 정의형 구조체 사용 : B 부분에 코딩
Dog bob = new Dog("파대기", "Beagle"); // 생성자를 이용할 때는 키워드 new 사용
Dog tom; // 값형이므로 선언과 동시에 스택 메모리 공간 할당, 바로 값 할당 가능
tom.Name = "쫑쫑이";
tom.Breed = "Poodle";
ShowResult(bob.Introduce());
ShowResult(tom.Introduce());
구조채 내의 변수와 메서드는 점표기법에 의해 각각 [식별자].멤버 변수, [식별자].메서드로 접근한다.
문자열과 배열
문자의 나열인 문자열형은 값형처럼 사용되지만, 같은 데이터형의 나열인 배열과 마찬가지로 참조형이다.
- 문자열
문자열형은 string 키워드를 사용하여 변수를 선언한다. 문자열을 변수에 할당할 때는 큰따옴표("")로 감싸 표현하며,
+연산자를 이용하여 문자열을 합친다.
// B 부분에 코딩
// 문자열 선언 및 초기화
string firstString;
firstString = "Web";
string secondString = "Developer";
// 문자열 합치기
string stringConcatenation = firstString + " " + secondString + " 2021";
ShowResult(stringConcatenation);
문자열형 변수에 물리적 경로를 지정해야 하는 경우에는 \를 사용하면 된다.
역슬래시(\) 하나는 이스케이프 문자의 시작으로 인식되기 때문에 역슬래시 2개로 표현한다.
string filePath = "C:\\ASPNET_Example\\03
하지만 경로의 깊이가 깊어질수록 경로를 알아보기 어렵기 때문에 @ 문자를 사용한다.
string filePath = @"C:\ASPNET_Example\03
- 배열
배열은 데이터형이 같은 일련의 데이터들을 저장하기 위해 사용한다. 배열을 구성하는 각각의 요소는 하나 이상의 인덱스 값을 통해 접근된다.
// 3개의 문자열을 저장할 수 있는 배열의 선언
string[] stringArray;
stringArray = new String[3]; // 메모리 할당
// 2 × 3개(모두 6개)의 정수를 저장할 수 있는 배열의 선언과 메모리 할당
int[,] intArray = new int[2, 3];
// 배열에 값 저장하기
stringArray[0] = "one"; // stringArray 인덱스 0 공간에 "one" 저장
intArray[1, 2] = 100; // intArray 행 인덱스 1, 열 인덱스 2 공간에 100 저장
stringArray
[0] "one" |
[1] null |
[2] null |
intArray
[0, 0] 0 |
[0, 1] 0 |
[0, 2] 0 |
[1, 0] 0 |
[1, 1] 0 |
[1, 2] 100 |
배열은 메모리 할당과 동시에 배열의 데이터형에 따라 정해진 값으로 초기화된다.
데이터형 | 정해진 값 | 데이터형 | 정해진 값 |
int | 0 | Long | 0L |
float | 0.0F | string | null |
상수
데이터를 처리하기 위해 값을 잠시 저장하는 공간인 변수와 대비되는 것이 상수이다.
상수는 변하지 않는 문자나 숫자 값을 의미하는데, C#에서는 const 키워드를 이용하는 방법과 readonly 키워드를 이용하는 방법을 제공한다.
- const 상수
const int NumberOfGrae = 4;
const 상수는 선언과 동시에 반드시 초기화되어야 한다. 자동으로 내부에서 static으로 선언되기 때문이다. static으로 선언한 필드나 메서드는 static이라는 특수한 영역에 메모리가 생성되어 클래스 전체에서 공유되고, 객체를 생성하지 않아도 접근할 수 있다.
- readonly 상수
readonly int NumberOfGrade;
readonly 상수는 const 상수와 달리 선언과 동시에 초기화하지 않아도 된다. static 키워드를 명시하지 않으면 static 상수가 아닌 일반 상수로 선언된다.
readonly static int NumberOfGrade = 4;
'ASP.NET 4.0' 카테고리의 다른 글
[ASP.NET] 연산자 (0) | 2021.12.27 |
---|---|
[ASP.NET] 형 변환과 형 변환 메서드 (0) | 2021.12.27 |
[ASP.NET] C# 기초. 변수, 데이터형(1) (0) | 2021.12.24 |
[ASP.NET] 웹 페이지 코드 쓰기 (0) | 2021.12.24 |
[ASP.NET] 웹 사이트 만들기 (0) | 2021.12.24 |
댓글