728x90
구조체란?
구조체는 이름 하나로 데이터를 묶어 관리하는 역할을 합니다. 변수는 이름 하나로 공간을 하나 갖고, 배열은 이름 하나로 형식이 동일한 공간을 여러 개 갖습니다. 변수와 배열을 확장하여 이름 하나로 데이터 형식을 1개 또는 여러 개 보관하는 그릇 역할을 하는 것이 바로 구조체입니다.
**구조체**
- 구조체를 정의하려면 struct 문을 사용한다.
- C# 구조체에 메소드, 필드, 속성등을 가질 수 있다.
- C# 구조체에 기본(Default) 생성자를 정의할 수 없다.
- C# 구조체에 소멸자를 정의할 수 없다.
- 클래스는 힙에 생성되는 참조 유형이고 구조체는 스택에 생성되는 값 유형이다.
- 구조체는 상속을 지원하지 않는다.
- 클래스와 달리 구조체는 new 연산자를 사용하지 않고 인스턴스화할 수 있다.
구조체를 사용하여 하나 이상의 변수 또는 배열을 묶어 관리하기
using System;
namespace N_StructDemo
{
struct Point
{
public double X;
public double Y;
}
public class StructDemo
{
public static void StructDemoEx()
{
Point point;
point.X = 3.5;
point.Y = 2.5;
Console.WriteLine($"X : {point.X}, Y : {point.Y}");
}
}
}
using System;
using N_StructDemo;
namespace Day8_Main
{
class Day8_Main
{
static void Main()
{
StructDemo.StructDemoEx(); //정적 메서드 호출
}
}
}
💡 Result
X : 3.5, Y : 2.5
구조체 배열을 사용해서 데이터 대입 및 출력하기
using System;
namespace N_StructArray
{
struct BusinessCard
{
public string Name;
public int age;
}
public class StructArray
{
public static void Print(string name, int age)
=> Console.WriteLine($"{name}은(는) {age}살 입니다.");
public static void StructArrayEx()
{
BusinessCard biz;
biz.Name = "가든";
biz.age = 27;
Print(biz.Name, biz.age);
BusinessCard[] names = new BusinessCard[2]; // 구주체 형식 배열 선언
names[0].Name = "이정원"; names[0].age = 25;
names[1].Name = "GardenLee"; names[1].age = 55;
for(int i = 0; i < names.Length; i++)
{
Print(names[i].Name, names[i].age);
}
}
}
}
using System;
using N_StructDemo;
using N_StructArray;
namespace Day8_Main
{
class Day8_Main
{
static void Main()
{
//StructDemo.StructDemoEx();
StructArray.StructArrayEx();
}
}
}
구조체 매개변수 : 함수의 매개변수에 구조체 사용하기
using System;
namespace N_StructParameter
{
struct Member //Member 구조체 선언
{
public string Name;
public int Age;
}
internal class StructParameter
{
public static void StructParameterEx()
{
string name = "이정원";
int age = 27;
Print(name, age);
Member m;
m.Name = "가든";
m.Age = 25;
Print(m);
}
static void Print(string name, int age)
=> Console.WriteLine($"이름은 {name}이며, 나이는 {age}입니다.");
static void Print(Member member)
=> Console.WriteLine($"이름은 {member.Name}이며, 나이는 {member.Age}입니다.");
}
}
using System;
using N_StructDemo;
using N_StructArray;
using N_StructParameter;
namespace Day8_Main
{
class Day8_Main
{
static void Main()
{
//StructDemo.StructDemoEx();
//StructArray.StructArrayEx();
StructParameter.StructParameterEx();
}
}
}
💡 Result
이름은 이정원이며, 나이는 27입니다.
이름은 가든이며, 나이는 25입니다.
728x90
'C# > Basic Syntax' 카테고리의 다른 글
[C#] 12. 클래스 (Class) (0) | 2022.10.24 |
---|---|
[C#] 11. 열거형 형식 (Enumeration; enum) (0) | 2022.10.24 |
[C#] 09. 닷넷 API 사용하기 (0) | 2022.10.22 |
[C#] 8. 함수 (0) | 2022.09.29 |
[C#] 7. 배열 (1) | 2022.09.22 |