C #-구조
C #에서 구조는 값 형식 데이터 형식입니다. 단일 변수가 다양한 데이터 유형의 관련 데이터를 보유하도록 도와줍니다. 그만큼struct 키워드는 구조를 만드는 데 사용됩니다.
구조는 레코드를 나타내는 데 사용됩니다. 도서관에서 책을 추적하고 싶다고 가정 해 보겠습니다. 각 책에 대한 다음 속성을 추적 할 수 있습니다.
- Title
- Author
- Subject
- 도서 ID
구조 정의
구조를 정의하려면 struct 문을 사용해야합니다. struct 문은 프로그램에 대해 둘 이상의 멤버를 사용하여 새 데이터 유형을 정의합니다.
예를 들어, 다음은 Book 구조를 선언하는 방법입니다.
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};
다음 프로그램은 구조의 사용을 보여줍니다-
using System;
struct Books {
public string title;
public string author;
public string subject;
public int book_id;
};
public class testStructure {
public static void Main(string[] args) {
Books Book1; /* Declare Book1 of type Book */
Books Book2; /* Declare Book2 of type Book */
/* book 1 specification */
Book1.title = "C Programming";
Book1.author = "Nuha Ali";
Book1.subject = "C Programming Tutorial";
Book1.book_id = 6495407;
/* book 2 specification */
Book2.title = "Telecom Billing";
Book2.author = "Zara Ali";
Book2.subject = "Telecom Billing Tutorial";
Book2.book_id = 6495700;
/* print Book1 info */
Console.WriteLine( "Book 1 title : {0}", Book1.title);
Console.WriteLine("Book 1 author : {0}", Book1.author);
Console.WriteLine("Book 1 subject : {0}", Book1.subject);
Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);
/* print Book2 info */
Console.WriteLine("Book 2 title : {0}", Book2.title);
Console.WriteLine("Book 2 author : {0}", Book2.author);
Console.WriteLine("Book 2 subject : {0}", Book2.subject);
Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);
Console.ReadKey();
}
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Book 1 title : C Programming
Book 1 author : Nuha Ali
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Zara Ali
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700
C # 구조의 기능
이미 Books라는 간단한 구조를 사용했습니다. C #의 구조는 기존 C 또는 C ++의 구조와 상당히 다릅니다. C # 구조에는 다음과 같은 기능이 있습니다.
구조에는 메서드, 필드, 인덱서, 속성, 연산자 메서드 및 이벤트가있을 수 있습니다.
구조체는 정의 된 생성자를 가질 수 있지만 소멸자는 가질 수 없습니다. 그러나 구조에 대한 기본 생성자를 정의 할 수 없습니다. 기본 생성자는 자동으로 정의되며 변경할 수 없습니다.
클래스와 달리 구조는 다른 구조 또는 클래스를 상속 할 수 없습니다.
구조는 다른 구조 또는 클래스의 기반으로 사용할 수 없습니다.
구조는 하나 이상의 인터페이스를 구현할 수 있습니다.
구조 멤버는 추상, 가상 또는 보호로 지정할 수 없습니다.
다음을 사용하여 구조체 객체를 만들 때 New연산자가 생성되고 적절한 생성자가 호출됩니다. 클래스와 달리 구조체는 New 연산자를 사용하지 않고 인스턴스화 할 수 있습니다.
New 연산자를 사용하지 않으면 필드는 할당되지 않은 상태로 유지되며 모든 필드가 초기화 될 때까지 개체를 사용할 수 없습니다.
클래스 대 구조
클래스와 구조에는 다음과 같은 기본적인 차이점이 있습니다.
- 클래스는 참조 유형이고 구조체는 값 유형입니다.
- 구조는 상속을 지원하지 않습니다.
- 구조체는 기본 생성자를 가질 수 없습니다.
위의 논의를 고려하여 이전 예제를 다시 작성해 보겠습니다.
using System;
struct Books {
private string title;
private string author;
private string subject;
private int book_id;
public void getValues(string t, string a, string s, int id) {
title = t;
author = a;
subject = s;
book_id = id;
}
public void display() {
Console.WriteLine("Title : {0}", title);
Console.WriteLine("Author : {0}", author);
Console.WriteLine("Subject : {0}", subject);
Console.WriteLine("Book_id :{0}", book_id);
}
};
public class testStructure {
public static void Main(string[] args) {
Books Book1 = new Books(); /* Declare Book1 of type Book */
Books Book2 = new Books(); /* Declare Book2 of type Book */
/* book 1 specification */
Book1.getValues("C Programming",
"Nuha Ali", "C Programming Tutorial",6495407);
/* book 2 specification */
Book2.getValues("Telecom Billing",
"Zara Ali", "Telecom Billing Tutorial", 6495700);
/* print Book1 info */
Book1.display();
/* print Book2 info */
Book2.display();
Console.ReadKey();
}
}
위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
Title : C Programming
Author : Nuha Ali
Subject : C Programming Tutorial
Book_id : 6495407
Title : Telecom Billing
Author : Zara Ali
Subject : Telecom Billing Tutorial
Book_id : 6495700