C#の定数とリテラル:型、ルール、ベストプラクティス完全ガイド
定数とは、プログラムの実行中に変更されない固定値のことです。これらの固定値はリテラルとも呼ばれます。定数は、整数定数、浮動小数点定数、文字定数、文字列リテラルなど、基本データ型のいずれかとして定義できます。また、列挙定数もあります。
定数は通常の変数と同様に扱われますが、定義後に値を変更できない点が異なります。
整数リテラル
整数リテラルは10進数または16進数の定数として表現できます。プレフィックスで基数を指定します:16進数は0xまたは0X、10進数にはプレフィックスは不要です。
サフィックスとしてU(unsigned)とL(long)の組み合わせを指定できます。大文字小文字は区別されず、順序も自由です。
整数リテラルの例
212 // 合法
215u // 合法(unsigned int)
0xFeeL // 合法(16進数のlong)
// その他の例
85 // 10進数
0x4b // 16進数
30 // int
30u // unsigned int
30l // long
30ul // unsigned long
浮動小数点リテラル
浮動小数点リテラルは、整数部、小数点、小数部、指数部で構成されます。10進形式または指数形式で表現できます。
浮動小数点リテラルの例
3.14159 // 合法
314159E-5F // 合法(指数形式)
510E // 違法:指数が不完全
210f // 違法:小数点も指数もない
.e55 // 違法:整数部または小数部が欠けている
10進形式の場合、小数点、指数、または両方を含める必要があります。指数形式の場合、整数部、小数部、または両方を含める必要があります。符号付き指数はeまたはEで導入されます。
文字定数
文字リテラルは一重引用符で囲みます。例:'x'。これはchar型の変数に格納できます。文字リテラルは、通常の文字('x')、エスケープシーケンス('\t')、ユニバーサル文字('\u02C0')のいずれかです。
主なエスケープシーケンス
| エスケープシーケンス | 意味 |
|---|---|
\\ | バックスラッシュ文字 |
\' | 一重引用符 |
\" | 二重引用符 |
\? | クエスチョンマーク |
\a | アラート(ベル) |
\b | バックスペース |
\f | フォームフィード |
\n | 改行 |
\r | キャリッジリターン |
\t | 水平タブ |
\v | 垂直タブ |
\xhh... | 1桁以上の16進数 |
エスケープシーケンスの使用例
using System;
namespace EscapeChar {
class Program {
static void Main(string[] args) {
Console.WriteLine("Hello\tWorld\n\n");
Console.ReadLine();
}
}
}
実行結果:
Hello World
文字列リテラル
文字列リテラルは二重引用符""または@""で囲みます。文字列には、文字リテラルと同様に、通常の文字、エスケープシーケンス、ユニバーサル文字を含めできます。
長い行を複数行に分割する場合は、空白で区切って記述します。
文字列リテラルの例(すべて同一の文字列)
"hello, dear"
"hello, \ dear"
"hello, " "d" "ear"
@"hello dear"
定数の定義
定数はconstキーワードを使用して定義します。
const <data_type> <constant_name> = value;
定数の定義と使用例
using System;
namespace DeclaringConstants {
class Program {
static void Main(string[] args) {
const double pi = 3.14159; // 定数宣言
double r;
Console.WriteLine("Enter Radius: ");
r = Convert.ToDouble(Console.ReadLine());
double areaCircle = pi * r * r;
Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
Console.ReadLine();
}
}
}
実行結果:
Enter Radius: 3
Radius: 3, Area: 28.27431
const と readonly の違い
| 特徴 | const | readonly |
|---|---|---|
| 初期化タイミング | コンパイル時(宣言時) | 実行時(コンストラクタまで) |
| 静的かどうか | 暗黙的にstatic | インスタンスごとに異なる値可 |
| 適用対象 | 値型、文字列、nullのみ | 任意の型 |
ベストプラクティス
- マジックナンバー(意味不明な数値)は定数として定義する
- アプリケーション全体で共有する設定値は
static readonlyを検討する - 定数名はパスカルケース(
MaxRetryCount)を使用する
C言語
- 交流回路における抵抗器、インダクタ、コンデンサの包括的まとめ
- C# キーワードと識別子:ルール、一覧、ベストプラクティス完全ガイド
- C# クラスとオブジェクト:堅牢な OOP の基礎
- C# 抽象クラスと抽象メソッドをマスターする:実践ガイド
- C# 部分クラスと部分メソッドを理解する
- C# sealed クラスとメソッドをマスターする:使用判断、実例、コードの安全性とパフォーマンス向上
- C++変数・リテラル・定数完全ガイド:基礎から実践まで
- C言語キーワードと識別子:実践ガイド
- C言語変数・定数・リテラル完全ガイド
- C 言語の変数、データ型、定数 – 実践ガイド
- C言語の定数とリテラル:型、使い方、ベストプラクティス