【C#.NET解説】 constの基本機能とビルド時の注意がわかる入門ガイド

2024年12月14日土曜日

キーワード(構文) 基本

t f B! P L

名前空間 System

const

自己紹介

こんにちは、私は大地と豊穣を象徴する神として知られる者です。今日は、C#.NETの「const」について、その特徴や使い方をお話しします。「const」は、一度決めたら変わらない不変の値を表すための修飾子です。まるで、季節ごとの豊作を永遠に約束するような存在ですね。

基本機能

「const」は定数を定義するための修飾子で、値を固定し、変更できないようにします。これはコンパイル時に決定されるため、パフォーマンス向上にも寄与します。

以下は基本的な使用例です:

C#
public class Example
{
    public const double Pi = 3.14159; // 円周率の定数

    public static void Main()
    {
        Console.WriteLine($"円周率は {Pi} です。");
    }
}

このように「const」を使えば、コードに明確さと安全性が加わります。

よく使う場面と注意点

「const」は主に、アプリ全体で共通して使用される定数値を定義する際に使用します。ただし、一度定義した値を変更することはできません。そのため、再コンパイルが必要になる場面もあります。

例えば、以下のような状況を考えてみましょう:

C#
public class Constants
{
    public const int MaxUsers = 100; // 最大ユーザー数
}

public class Program
{
    public static void Main()
    {
        Console.WriteLine($"最大ユーザー数は {Constants.MaxUsers} です。");
    }
}

この「MaxUsers」を変更するときは、参照しているすべてのプロジェクトを再コンパイルする必要があります。これが注意点です。

readonlyとの違いを理解する

「readonly」は「const」と似ていますが、重要な違いがあります。「readonly」は実行時に値を設定できるため、動的な値に対応可能です。

具体的な例を見てみましょう:

C#
public class Example
{
    public const string AppName = "MyApp"; // コンパイル時に固定
    public readonly DateTime CreatedDate;  // 実行時に設定可能

    public Example()
    {
        CreatedDate = DateTime.Now; // 実行時に初期化
    }

    public void DisplayInfo()
    {
        Console.WriteLine($"アプリ名: {AppName}");
        Console.WriteLine($"作成日時: {CreatedDate}");
    }
}

このように「const」は完全に固定されますが、「readonly」は柔軟に使えます。

具体的な使い方

「const」を利用して、設定値や計算用の固定値を管理するケースを見てみましょう:

C#
public class Configuration
{
    public const string ApiEndpoint = "https://api.example.com";
    public const int TimeoutSeconds = 30;
}

public class Program
{
    public static void Main()
    {
        Console.WriteLine($"APIエンドポイント: {Configuration.ApiEndpoint}");
        Console.WriteLine($"タイムアウト: {Configuration.TimeoutSeconds}秒");

        // 設定ファイルから読み込む例
        string filePath = "config.txt";
        string apiUrl;
        if (File.Exists(filePath))
        {
           apiUrl = File.ReadAllText(filePath);
        }
           else
        {
           apiUrl = Configuration.ApiEndpoint;
        }
        Console.WriteLine($"使用するAPIエンドポイント: {apiUrl}");
    }
}

このように「const」を活用することで、コードの可読性と保守性が向上します。

このブログを検索

QooQ