[ASP.NET] C# 데이터형(2), 상수

사용자 정의형 데이터

내장형 데이터와 달리 사용자가 직접 데이터형을 정의한다. 열거형(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

댓글