0Pricing
C# Academy · 강의

구조체의 기본 생성자

값 형식에 기본 생성자를 적용합니다.

구조체의 기본 생성자은(는) 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); // 5

readonly 구조체

주 생성자가 있는 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 클래스의 기본 생성자
  2. 멤버에서 매개 변수 캡처
  3. 구조체의 기본 생성자
  4. 속성 및 기본 형식과 결합
← C# Academy(으)로 돌아가기