구조체(C# 및 Java)
업데이트: 2007년 11월
C#은 C에서 시작되었지만 Java에는 사용되지 않는 항목 중 하나인 struct 키워드를 지원합니다. struct는 간단한 클래스라고 이해할 수 있습니다. structs에는 생성자, 상수, 필드, 메서드, 속성, 인덱서, 연산자 및 중첩 형식이 포함될 수 있지만 대부분은 단순히 관련 필드 그룹을 캡슐화하는 데 사용됩니다. 구조체는 값 형식이므로 클래스보다는 약간 더 효율적으로 할당될 수 있습니다. structs는 abstract일 수 없고 구현 상속을 지원하지 않는다는 점에서 클래스와 다릅니다.
다음 예제에서는 매개 변수 없는 기본 생성자를 호출하는 new 키워드를 사용하여 struct를 초기화한 다음 인스턴스의 멤버를 설정합니다.
public struct Customer
{
public int ID;
public string Name;
public Customer(int customerID, string customerName)
{
ID = customerID;
Name = customerName;
}
}
class TestCustomer
{
static void Main()
{
Customer c1 = new Customer(); //using the default constructor
System.Console.WriteLine("Struct values before initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
System.Console.WriteLine();
c1.ID = 100;
c1.Name = "Robert";
System.Console.WriteLine("Struct values after initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
}
}
출력
위의 코드를 컴파일하고 실행하면 struct 변수가 기본적으로 초기화되었음을 출력에서 확인할 수 있습니다. int 변수는 0으로 초기화되고 string 변수는 빈 문자열로 초기화됩니다.
Struct values before initialization:
ID = 0, Name =
Struct values after initialization:
ID = 100, Name = Robert