1. 값 타입

1.1 타입의 종류        1.2 내장형        1.3 열거형        1.4 구조체



■ 타입(Type) : 변수의 형식

■ CTS(Common Type System, 공용 타입 체계): CTS는 타입이 어떻게 선언되고, 사용되고, 다루어 지는지를 정의한다. 모든 닷넷용 언어들이 모두 공통의 타입 체계를 따르기 때문에 닷넷 언어끼리는 타입이 호환되어 혼합 프로그래밍이 가능해진다.

 

<CTS의 타입과 언어별 별칭>

 

■ 타입의 분류

1)

이미지출처: http://www.hanb.co.kr/network/view.html?bi_id=151

 

2)

 

■ 닷넷의 타입(CTS가 정의하는 모든 타입)은 단순한 예약어가 아니라 클래스이거나 구조체여서 타입 자체가 필드와 메서드, 프로퍼티들을 가진다.

 

■ 구조체: 타입이 다른 변수들의 집합. 구조체는 값타입이므로 선언되는 동시에 사용 가능. 사용자 정의형(열거 멤버나 필드, 메서드를 정의할 수 있음)

 

<기본형식>

Struct    이름

{

멤버 선언문;

}

 

<예제>

using System;

class CSTest

{

static void Main()

{

Book b;    // Book 타입의 구조체 변수 b 선언

b.Name = "노점상으로 떼돈벌기";        // b의 Name필드 초기화

b.Price = "10000"                              // b의 Price 필드 초기화

// 연산자(=)를 이용하여 구조체의 멤버 액세스

Console.WriteLine("책 제목 : " {0}, 가격 : {1}", b.Name, b.Price);      // 초기화된 구조체 내용 출력

}

}

 

struct Book                                //Book 구조체 선언

{

public string Name;        // Book 구조체의 필드-문자열형(string) 제목(Name)

public int Price;            // Book 구조체의 필드-정수형(int) 가격(Price)

}

 

1) 구조체 멤버의 디폴트 액세스 지정은 private, 외부 공개 멤버들은 반드시 public 액세스 지정

2) 구조체는 기반클래스로 사용할 수 없음. 즉, 구조체로부터 다른 구조체나 클래스를 파생시킬 수 없음

3) 구조체 선언이 Main보다 뒤쪽에 와도 상관없음

4) 구조체는 값 타입이므로 선언후 곧바로 사용 가능. 하지만 클래스(참조 타입)와 사용 방법을 통일하기 위해 new연산자를 쓸 수 있음

 

<new 연산자-통일성, 생성자 호출 위해 사용>

using System;

class CSTest

{

static void Main()

{

Book b = new Book("노점상으로 떼돈벌기", 10000);    //new연산자로 생성자 호출, 구조체 선언과 동시에 초기화 가능

b.OutBook();

}

}

 

struct Book

{

public string Name;

public int Price;

public Book(string aName, int aPrice)    //생성자 정의(제목과 가격을 인수로 받아 자신의 멤버를 초기화 함)

//생성자는 구조체의 타입면과 동일한 이름을 가져야 하며 결과를 리턴할 수 없다.

{

Name = aName;

Price = aPrice;

}

public void OutBook()

{

Console.writeLine("책 제목 : {0}, 가격 : {1}", Name, Price);

}

}

'PROGRAMMING > C#.NET' 카테고리의 다른 글

static and instance  (0) 2011.03.11
chap.3 타입 2. 참조 타입  (0) 2011.03.08
[0304과제] 연산자 종류(C, C#)  (0) 2011.03.06
[0304과제] 자료형(type)의 종류  (0) 2011.03.06
[0221과제] 수퍼팩(C#)  (0) 2011.02.23
Posted by 마마필로 :