0Pricing
C# Academy · レッスン

コンストラクターとstaticメンバー

コンストラクター(オーバーロードや連鎖を含む)でオブジェクトを構築し、すべてのインスタンスで共有するデータをstaticフィールド/メソッドで扱います。

「コンストラクターとstaticメンバー」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全3レッスンが含まれています。

コンストラクターと static:概要

目標:オブジェクトを安全に構築し、インスタンス間でデータを共有します。

  • コンストラクターは必須の状態を設定します
  • オーバーロードとthis(...)によるチェーン
  • staticフィールドとメソッドはすべてのオブジェクトで共有されます

基本的なコンストラクター

コンストラクターは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);
  }
}

static メンバー

staticメンバーはすべてのインスタンスで共有されます。static メソッドは型名を使って呼び出します。

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());
  }
}

static コンストラクターと定数

static コンストラクターは型ごとに一度だけ実行されます。コンパイル時のリテラルにはconstを、実行時に設定する値にはstatic 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
  }
}

ヒント

ヒント:

  • コンストラクターは小さく保ち、入力を早い段階で検証します。
  • よく使う既定値にはオーバーロードを使用し、1つの主要なコンストラクターにチェーンさせます。
  • データが本当に型に属する場合(カウンターやヘルパーなど)にstaticを使用します。

static メンバーの概念

static メンバーについて正しい説明はどれでしょうか?

まとめ

まとめ:コンストラクターで必須の状態を設定し、利便性のためにオーバーロードとチェーンを使用します。すべてのオブジェクトで共有するデータやヘルパーにはstaticメンバーを追加します。

よくある質問

「コンストラクターとstaticメンバー」レッスンは無料ですか?

はい。「コンストラクターとstaticメンバー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全3レッスンが含まれています。

「コンストラクターとstaticメンバー」で何を学びますか?

コンストラクター(オーバーロードや連鎖を含む)でオブジェクトを構築し、すべてのインスタンスで共有するデータをstaticフィールド/メソッドで扱います。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。

「コンストラクターとstaticメンバー」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. フィールド、自動プロパティ、オブジェクト初期化子
  2. コンストラクターとstaticメンバー
  3. カプセル化と不変条件
← C# Academyに戻る