구조체의 기본 생성자
값 형식에 기본 생성자를 적용합니다.
구조체의 기본 생성자은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
구조체의 주 생성자
구조체도 주 생성자를 지원합니다. 예를 들면 struct Point(int x, int y)와 같습니다. 클래스와 매우 유사하게 헤더에서 매개 변수를 선언합니다.
using System;
struct Point(int x, int y) {
public int X => x;
public int Y => y;
}
var p = new Point(3, 4);
Console.WriteLine(p.X + "," + p.Y); // 3,4매개 변수가 없는 생성자도 존재합니다
구조체에는 항상 기본값을 생성하는 암시적 매개 변수 없는 생성자가 있습니다. 주 생성자는 이 생성자와 함께 매개 변수가 있는 생성자를 추가합니다.
using System;
struct Vec(int x, int y) {
public int X => x;
public int Y => y;
}
var zero = new Vec(); // default: x=0, y=0
Console.WriteLine(zero.X + "," + zero.Y); // 0,0속성을 통한 매개 변수 노출
클래스와 마찬가지로 구조체의 주 생성자 매개 변수도 자동으로 공개 속성이 되지는 않으므로 명시적으로 노출해야 합니다.
using System;
struct Size(int w, int h) {
public int Width { get; } = w;
public int Height { get; } = h;
}
var s = new Size(10, 20);
Console.WriteLine(s.Width * s.Height); // 200계산된 멤버
구조체의 주 생성자는 계산된 식 본문 멤버와 잘 어울립니다.
using System;
struct Complex(double re, double im) {
public double Magnitude => Math.Sqrt(re * re + im * im);
}
Console.WriteLine(new Complex(3, 4).Magnitude); // 5readonly 구조체
주 생성자가 있는 readonly struct는 변경 불가능성을 보장합니다. 모든 멤버가 상태를 변경하지 않아야 하므로 읽기 전용 속성과 특히 잘 맞습니다.
using System;
readonly struct Money(decimal amount, string currency) {
public decimal Amount { get; } = amount;
public string Currency { get; } = currency;
public string Display => Amount.ToString("0.00") + " " + Currency;
}
Console.WriteLine(new Money(5m, "USD").Display); // 5.00 USD주 생성자로 연결하기
추가 구조체 생성자는 클래스와 마찬가지로 : this(...)를 사용해 주 생성자를 호출해야 합니다.
using System;
struct Square(int side) {
public int Side => side;
public int Area => side * side;
public Square() : this(1) { } // explicit default side
}
Console.WriteLine(new Square(4).Area); // 16기본 생성자와 주 생성자 비교
new Square()는 암시적 0 초기화를 사용하거나 직접 선언한 매개 변수 없는 생성자를 사용할 수 있다는 점에 유의하세요. 연결하는 생성자를 정의하면 해당 생성자의 논리가 실행됩니다.
using System;
struct Pct(double value) {
public double Value { get; } = value;
public Pct() : this(100) { }
}
Console.WriteLine(new Pct().Value); // 100값 의미 체계는 유지됩니다
구조체는 여전히 값으로 복사됩니다. 주 생성자가 이 동작을 바꾸지는 않으므로 구조체를 할당하면 모든 필드가 복사됩니다.
using System;
struct Counter(int n) {
public int N { get; set; } = n;
}
var a = new Counter(1);
var b = a; // copy
b.N = 99;
Console.WriteLine(a.N + " " + b.N); // 1 99변경 가능한 필드 초기화
매개 변수에서 설정 가능한 속성이나 필드를 초기화할 수 있지만, 일반적으로는 변경 불가능한 구조체가 더 바람직합니다.
using System;
struct Bag(int capacity) {
public int Capacity { get; set; } = capacity;
public int Used { get; set; } = 0;
}
var bag = new Bag(10);
bag.Used = 3;
Console.WriteLine(bag.Capacity - bag.Used); // 7분해
주 생성자를 Deconstruct 메서드와 함께 사용하면 튜플과 비슷하게 값을 풀어낼 수 있습니다.
using System;
struct Point(int x, int y) {
public int X => x;
public int Y => y;
public void Deconstruct(out int a, out int b) { a = x; b = y; }
}
var (px, py) = new Point(7, 8);
Console.WriteLine(px + "," + py); // 7,8함께 적용하기
readonly 구조체와 주 생성자로 만든 작고 변경 불가능한 값 형식입니다.
using System;
readonly struct Temperature(double celsius) {
public double Celsius { get; } = celsius;
public double Fahrenheit => Celsius * 9 / 5 + 32;
}
var t = new Temperature(25);
Console.WriteLine(t.Fahrenheit); // 77빠른 확인
구조체의 주 생성자에 대한 이해도를 확인해 보세요.
요약
구조체에서 주 생성자를 사용하는 방법을 배웠습니다.
struct P(int x, int y)는 헤더에서 매개 변수를 선언합니다.- 암시적 매개 변수 없는 생성자는 여전히 존재합니다.
readonly struct와 결합하면 변경 불가능한 값 형식을 만들 수 있습니다.- 추가 생성자는
: this(...)로 연결됩니다.
자주 묻는 질문
“구조체의 기본 생성자” 강의는 무료인가요?
네 — “구조체의 기본 생성자” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“구조체의 기본 생성자”에서 뭘 배우나요?
값 형식에 기본 생성자를 적용합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C# Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“구조체의 기본 생성자” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 클래스의 기본 생성자
- 멤버에서 매개 변수 캡처
- 구조체의 기본 생성자
- 속성 및 기본 형식과 결합