0Pricing
C# Academy · 강의

생성자와 정적 멤버

생성자(오버로드와 연결 포함)로 객체를 만들고, 모든 인스턴스가 공유하는 데이터를 정적 필드와 메서드에 저장합니다.

생성자와 정적 멤버은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

생성자와 정적 멤버 개요

목표: 개체를 안전하게 생성하고 인스턴스 간에 데이터를 공유합니다.

  • 생성자는 필수 상태를 설정합니다
  • 오버로드와 this(...) 연결
  • 모든 개체가 공유하는 정적 fields/methods

기본 생성자

생성자는 new를 호출할 때 실행되어 개체를 초기화합니다.

using System;

// Constructor sets required data on creation
public class User
{
  public string Name { get; private set; }
  public int Age { get; private set; }

  public User(string name, int age)
  {
    Name = name;
    Age = age;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    User u = new User("Ada", 28);
    Console.WriteLine(u.Name + " (" + u.Age + ")");
  }
}

오버로드와 연결

편의를 위해 생성자 오버로드를 사용하고, 로직을 재사용하려면 this(...)를 사용합니다.

using System;

// Overloads let you offer defaults; chain with this(...)
public class Point2D
{
  public int X { get; private set; }
  public int Y { get; private set; }

  public Point2D(int x, int y)
  {
    X = x; Y = y;
  }

  public Point2D(int xy) : this(xy, xy) { } // calls the main constructor
}

public class Program
{
  public static void Main(string[] args)
  {
    Point2D p1 = new Point2D(3, 4);
    Point2D p2 = new Point2D(5); // becomes (5,5)
    Console.WriteLine("p1: " + p1.X + "," + p1.Y);
    Console.WriteLine("p2: " + p2.X + "," + p2.Y);
  }
}

정적 멤버

정적 멤버는 모든 인스턴스가 공유합니다. 형식 이름을 통해 정적 메서드를 호출합니다.

using System;

// Static members live on the type (one copy shared)
public class Counter
{
  private static int _created = 0;   // shared count
  public int Id { get; private set; }

  public Counter()
  {
    _created = _created + 1;
    Id = _created;
  }

  public static int CreatedCount()
  {
    return _created;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Counter a = new Counter();
    Counter b = new Counter();
    Console.WriteLine("a.Id=" + a.Id + ", b.Id=" + b.Id);
    Console.WriteLine("Total created = " + Counter.CreatedCount());
  }
}

정적 생성자와 상수

정적 생성자는 형식마다 한 번 실행됩니다. 컴파일 시점 리터럴에는 const를 사용하고, 실행 시간에 설정되는 값에는 정적 readonly를 사용합니다.

using System;

public class AppConfig
{
  public const string AppName = "Demo";      // compile-time constant
  public static readonly DateTime StartedAt; // runtime-initialized once

  // Static constructor: runs once before first use of the type
  static AppConfig()
  {
    StartedAt = DateTime.UtcNow;
  }

  public static string Info()
  {
    return AppName + " started at " + StartedAt.ToString("u");
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(AppConfig.Info());
    Console.WriteLine(AppConfig.Info()); // static ctor ran only once
  }
}

팁

팁:

  • 생성자는 작게 유지하고 입력을 조기에 검증합니다.
  • 일반적인 기본값에는 오버로드를 사용하고, 하나의 주 생성자로 연결합니다.
  • 데이터가 실제로 형식에 속할 때(예: 카운터와 도우미)에 정적을 사용합니다.

정적 멤버 개념

빠르게 확인해 보겠습니다. 정적 멤버에 대한 설명으로 올바른 것은 무엇입니까?

복습

복습: 생성자를 사용하여 필수 상태를 설정하고, 편의를 위해 오버로드하고 연결하며, 모든 개체가 공유하는 데이터나 도우미에는 정적 멤버를 추가합니다.

자주 묻는 질문

“생성자와 정적 멤버” 강의는 무료인가요?

네 — “생성자와 정적 멤버” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“생성자와 정적 멤버”에서 뭘 배우나요?

생성자(오버로드와 연결 포함)로 객체를 만들고, 모든 인스턴스가 공유하는 데이터를 정적 필드와 메서드에 저장합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.

“생성자와 정적 멤버” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 필드, 자동 속성, 객체 이니셜라이저
  2. 생성자와 정적 멤버
  3. 캡슐화와 불변 조건
← C# Academy(으)로 돌아가기