C#のreadonlyキーワードとは?フィールドを読み取り専用にするメリットと使い方を解説
C#のreadonlyキーワードは、メンバー変数を定数として扱うために使用されますが、その値を実行時に計算して設定できる点が大きな特徴です。これは、コンパイル時に値が確定していなければならないconst修飾子による定数とは明確に異なります。
readonlyを使用すると、フィールドの値は「宣言時」または「そのフィールドが属するクラスのコンストラクター内」で設定できます。一度値が代入されると、それ以降変更することはできないため、不変性(イミュータビリティ)を保証したい場面で非常に有効です。
readonly修飾子が使える4つの文脈
- フィールド宣言
- readonly構造体(struct)の宣言
- readonlyメンバーの定義
- ref readonlyメソッドの戻り値
フィールド宣言の文脈でreadonlyを使う場合、値の代入が許されるのは「宣言時」か「同じクラスのコンストラクターが呼び出されたとき」だけである点に注意が必要です。それ以外の場所で代入しようとすると、コンパイルエラーが発生します。
コード例:フィールドでのreadonly
class Program
{
readonly string Name;
public Program()
{
Name = "Name";
}
static void Main(string[] args)
{
Program a = new Program();
System.Console.WriteLine(a.Name);
Console.ReadLine();
}
}出力結果
Name
readonly構造体(struct)
C# 7.2以降では、構造体全体を読み取り専用として宣言することもできます。readonly structのすべてのインスタンスメンバーは不変となり、誤って状態を変更してしまうバグを防ぐことができます。
public readonly struct Server
{
public readonly string Name;
public Server(string name)
{
Name = name;
}
}
class Program
{
static void Main(string[] args)
{
Server a = new Server("Domain Controller");
System.Console.WriteLine(a.Name);
Console.ReadLine();
}
}出力結果
Domain Controller
まとめ
readonlyは、実行時に初期化したい定数フィールドや、不変性を保証したいデータ構造に最適なキーワードです。コンパイル時に値が決まるconstと適切に使い分けることで、より安全で保守性の高いC#コードを書くことができます。
-
C#学習の始め方|必要な前提条件と開発環境の準備ガイド
C#を学習するための前提条件 C#の学習を始めるにあたって、まず必要となるのは基本的なコンピュータに関する知識です。パソコンの基本操作やファイル管理などを問題なくこなせるレベルであれば、十分にスタートできます。 さらに、C言語やC++などのプログラミング経験があれば、C#の文法や考え方をよりスムーズに理解できるでしょう。これらの言語はC#と共通する部分が多く、学習の大きな助けになります。もちろん、プログラミング未経験からでもC#の習得は十分可能です。 ステップ1:Visual Studioをインストールする C#での開発を本格的に始めるなら、まず統合開発環境(IDE)であるVisual S
-
SOCKS5プロキシのメリットとは?VPNとの違いや活用法を徹底解説
VPNとプロキシサーバーを比較すると、多くの人はVPNの方が信頼性とセキュリティが高いと考えています。確かにその通りです。VPNは暗号化されたトンネルを通じて安全な接続を確立できる一方、従来のプロキシサーバーはWeb閲覧中の安全性を十分に保証してくれません。 では、「SOCKS5プロキシ」という言葉を聞いたことはありますか?SOCKS5は、プロキシサーバーのより安全なバージョンとも言える存在で、プライバシーとセキュリティを強化するための追加の利点をもたらしてくれます。 この記事では、SOCKS5プロキシの基本情報、主なメリット、そして安全な接続を確立するためにSOCKS5プロキシをVPNと併