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 |