C# のデータ型: Double、整数、浮動小数点、文字型

⚡ スマートサマリー

C#におけるデータ型は、変数が保持できる値の種類を定義します。これには、整数や浮動小数点数からブール値や文字列値までが含まれます。また、データ型は、プログラム実行中に各変数が確保するメモリ量を決定します。

  • 🔢 整数型: Int32キーワード(int)は、10、20、30などの整数を固定メモリ範囲内に格納します。
  • 🔣 浮動小数点型: double型とfloat型は小数値を保持するが、decimal型は金融計算においてより高い精度を提供する。
  • ☑️ ブール型: ブールキーワードは真偽値のみを格納し、条件付きロジックを制御します。
  • 🔤 テキストの種類: char型は1文字を格納し、string型は文字の並びをテキストとして格納します。
  • 🧩 価値対基準値: 値型はデータを直接格納するのに対し、文字列などの参照型はメモリのアドレスを格納する。
  • 🤖 AI支援: GitHub CopilotとML.NETは、C#の型処理にコード提案機能と機械学習機能をもたらします。

C# のデータ型

C# のデータ型とは何ですか?

C# 言語には、一連の基本データ型が付属しています。 これらのデータ型は、アプリケーション内で使用される値を構築するために使用されます。 C# で使用できる基本的なデータ型を見てみましょう。 各例では、Program.cs ファイル内の main 関数のみを変更します。

1)整数

整数データ型は数値を扱うために使用されます。この場合、数値は10、20、30などの整数です。C#では、データ型は Int32 キーワード。 以下は、このデータ型の使用方法の例です。 この例では、num という Int32 変数を定義します。 次に、変数に整数値を代入し、それに応じて表示します。

C# の整数データ型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   Int32 num=30;
   Console.Write(num);  
   
   Console.ReadKey();
  }
 }
}

Code 説明:-

  1. Int32 データ型は、num という整数変数を宣言するために指定されます。 次に、変数には値 30 が割り当てられます。
  2. 最後に、console.write 関数を使用して番号をコンソールに表示します。

上記のコードが正しく入力され、プログラムが正常に実行されると、次の出力が表示されます。

出力:

C# の整数データ型

出力から、numという整数変数がコンソールに表示されていることがはっきりとわかります。

2) Double

doubleデータ型は小数点を扱うのに使用されます。この場合、数値は10.11、20.22、30.33などの整数です。C#では、データ型はキーワード「Double”。 以下にこのデータ型の例を示します。

この例では、numというdouble変数を定義します。次に、 Double 値を変数に代入し、それに応じて表示します。

Double C# のデータ型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   double num=30.33;
   Console.Write(num); 
   
   Console.ReadKey();
  }
 }
}

Code 説明:-

  1. doubleデータ型はdouble型を宣言するために指定される 変数 ナムと呼ばれます。 次に、変数には 30.33 の値が割り当てられます。
  2. 最後に、console.write 関数を使用して番号をコンソールに表示します。

上記のコードが正しく入力され、プログラムが正常に実行されると、次の出力が表示されます。

出力:

Double C# のデータ型

出力から、numというdouble変数がコンソールに表示されていることがはっきりとわかります。

3) ブール値

ブール データ型は、次のブール値を操作するために使用されます。 真と偽。 C# では、データ型は Boolean キーワードで示されます。 以下は、使用できるこのデータ型の例です。

この例では、「status」というブール変数を定義します。 次に、変数にブール値を代入し、それに応じて表示します。

C# のブール データ型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
  { 
   static void Main(string[] args) 
   {
    Boolean status=true;
    Console.Write(status);
    
    Console.ReadKey();
   }
  }
}

Code 説明:-

  1. ブール データ型は、「status」と呼ばれるブール変数を宣言するために指定されます。 次に、変数には true/false の値が割り当てられます。
  2. 最後に、console.write 関数を使用して、ブール値をコンソールに表示します。

上記のコードが正しく入力され、プログラムが正常に実行されると、出力が表示されます。

出力:

C# のブール データ型

出力から、trueに等しいブール変数がコンソールに表示されていることがはっきりとわかります。

4) 文字列

String データ型は、String 値を操作するために使用されます。 C# では、データ型はキーワード「String」で表されます。 以下にこのデータ型の例を示します。

この例では、「message」という文字列変数を定義します。 次に、文字列値を変数に割り当て、それに応じて表示します。

C# の文字列データ型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class program
 {
  static void Main(string[] args)
  {
   String message="Hello";
   Console.Write(message);
   
   Console.ReadKey();
  }
 }
}

Code 説明:-

  1. String データ型は、message という文字列変数を宣言するために指定されます。 次に、変数には「Hello」の値が割り当てられます。
  2. 最後に、console.write 関数を使用して文字列値をコンソールに表示します。

上記のコードが正しく入力され、プログラムが正常に実行されると、出力が表示されます。

出力:

C# の文字列データ型

出力から、messageという文字列変数がコンソールに表示されていることがはっきりとわかります。

C#のデータ型一覧

上記の4つの例は最も一般的な型を網羅していますが、C#には組み込みの値データ型が豊富に用意されています。各型は一定量のメモリを確保し、特定の値の範囲を受け入れるため、データに安全に収まる最小の型を選択することで、プログラムの効率性を維持できます。

Data Type サイズ 範囲 / Descriptexpression CMS
バイト 1バイト 0〜255
短い 2バイト -32,768~32,767
int (Int32) 4バイト -2,147,483,648~2,147,483,647
長い 8バイト 非常に大きな整数(±9.2京)
フロート 4バイト 約6~7桁の精度を持つ小数
8バイト 約15~16桁の精度を持つ小数
10進数 16バイト お金を表す高精度な小数点(28~29桁)
チャリオット 2バイト 単一のUnicode文字
ブール 1バイト true または false

これらの値型に加えて、文字列型は最も広く使用されている参照型であり、任意の長さの文字シーケンスを格納します。適切な型を選択することで、オーバーフローエラーや不要なメモリ使用を防ぐことができます。

C#における値型と参照型

C# のデータ型は、値型と参照型の 2 つのグループのいずれかに分類されます。この分類によって、C# がデータをどのように格納するか、また、変数をコピーしたりメソッドに渡したりする際に、変数がどのように動作するかが決まります。

  • 値の型: これらは実際のデータを直接、通常はスタックに格納します。 int、double、bool、char、 列挙型、および struct は値型です。ある変数を別の変数に代入すると値がコピーされるため、2 つの変数は独立したままです。
  • 参照タイプ: これらは、ヒープ上のデータを指す参照(メモリ アドレス)を格納します。文字列、オブジェクト、配列、クラス インスタンスは参照型です。参照変数をコピーするとアドレスのみがコピーされるため、両方の変数は同じオブジェクトを共有します。

値型変数は常に値を保持するため、決してnullになることはありません。一方、初期化されていない参照型はデフォルトでnullになります。この違いを理解することで、データの変更がプログラム内でどのように処理されるかを予測しやすくなります。

C# での型変換

C#では、ユーザー入力(常にテキスト)を数値に変換するなど、あるデータ型から別のデータ型へ値を移動させる必要が頻繁に発生します。このプロセスは型変換と呼ばれ、主に3つの方法で行われます。

  • 暗黙的な型変換: コンパイラは、int型をdouble型に代入する場合など、データ損失のリスクがない場合に自動的に変換を行います。特別な構文は必要ありません。
  • 明示的な型変換(キャスト): 対象の型を括弧で囲みます。例: (int)myDouble型変換ではデータが失われる可能性があり、例えばdouble型をint型に変換すると小数点以下が失われるため、そのリスクを意図的に受け入れる必要があります。
  • ヘルパーメソッド: Convertクラス(Convert.ToInt32)と各型のParseメソッド(int.Parse)は文字列を数値に変換し、ToStringメソッドは値を再び読みやすいテキストに戻します。

適切な変換を選択することで、データの正確性が保たれ、代入の両側の型が一致しない場合に発生する実行時エラーを防ぐことができます。

よくあるご質問

float、double、decimalはすべて小数値を格納しますが、精度とサイズが異なります。floatは約7桁で4バイト、doubleは約15桁で8バイト、decimalは高精度の金融値で16バイトを使用します。

実際には違いはありません。int は .NET の System.Int32 型の C# における別名なので、int と Int32 は全く同じものにコンパイルされます。ほとんどの開発者は簡潔さを期すために int と記述しますが、Int32 は基となるフレームワークの型を明示します。

文字列は参照型です。なぜなら、ヒープ上に保持されている文字データへの参照を格納するからです。ただし、ある点では値型のように振る舞います。文字列は不変であるため、変更を加えるたびに古い文字列オブジェクトを編集するのではなく、新しい文字列オブジェクトが作成されます。

null許容型を使用すると、intやboolなどの値型がnull値も保持できるようになります。null値は末尾に疑問符を付けて、例えばint?のように表記します。これは、欠損値をゼロやfalseとは明確に区別して表現する必要がある、オプションのデータやデータベースフィールドに役立ちます。

char型は、Unicode文字を1つだけ格納し、'A'のようにシングルクォーテーションで囲みます。string型は、0個以上の文字のシーケンスを格納し、ダブルクォーテーションで囲みます。char型は値型であり、string型は参照型です。

`var` はコンパイル時に変数の型を推論し、その型は IntelliSense の完全なサポートを受けて固定されます。一方、`dynamic` は型チェックをランタイムまで延期するため、型エラーは実行時にのみ発生します。安全性を重視する場合は `var` を、柔軟性の高い遅延バインディングのシナリオでは `dynamic` を使用してください。

はい。GitHub Copilot は、Visual Studio 内で型宣言、変換、定型コードを提案し、 Visual Studio Code適切な数値型を推奨したり、解析コードを生成したりすることはできますが、提案内容には精度やオーバーフローの問題が見落とされている可能性があるため、出力結果を確認する必要があります。

はい。ML.NETはC#のデータ型をモデルの特徴量にマッピングし、トレーニングデータにはfloatやdoubleなどの数値型を、テキストには文字列型を使用します。厳密に型付けされたデータクラスが各列を記述するため、機械学習モデルはC#アプリケーションに自然に統合されます。