【C#】C#のデータ型完全ガイド - 基本から高度な型まで詳しく解説

【C#】C#のデータ型完全ガイド - 基本から高度な型まで詳しく解説

2024-08-19

2024-08-19

C#では、データを扱うためにさまざまな「データ型」が用意されています。それぞれのデータ型には役割があり、適切に使うことでプログラムの精度や効率が向上します。ここでは、基本的なデータ型から少し高度なデータ型まで、詳しくわかりやすく解説します。

基本的なデータ型

最初に、C#のプログラミングでよく使われる基本的なデータ型を紹介します。これらのデータ型は、数値や文字、真偽値など、プログラムの中で頻繁に使われるものです。

数値を扱うデータ型

  • int: 一般的に最もよく使われる32ビットの整数型です。値の範囲は -2,147,483,648 ~ 2,147,483,647 です。たとえば、年齢や個数を表すときに使います。

    int age = 25;
    
  • long: より大きな数値を扱いたい場合に使います。64ビットの整数型で、より広い範囲(約 -9京 ~ 9京)の数値を扱えます。

    long distance = 9876543210;
    
  • short: 小さな数値を扱う16ビットの整数型です。範囲は -32,768 ~ 32,767

    short smallNumber = 32000;
    
  • byte: 8ビットの整数型で、0 ~ 255 の範囲の正の整数を扱います。主に小さな範囲のデータやバイト単位のデータを扱うときに使います。

    byte age = 18;
    
  • sbyte: 符号付きの8ビット整数で、-128 ~ 127 の範囲を扱います。

    sbyte temperature = -5;
    
  • uint, ulong, ushort: これらはそれぞれ符号なしの整数型で、負の数を扱わない場合に使用されます。範囲が広いため、正の数のみを扱う場面に適しています。

小数を扱うデータ型

  • float: 単精度の32ビット浮動小数点型です。7桁程度の精度で小数を扱いますが、特に高い精度を必要としないときに使います。小数点を含むデータを扱うときに便利です。

    float pi = 3.14f;
    
  • double: 倍精度の64ビット浮動小数点型です。通常の計算で使われることが多く、15~16桁の精度を持っています。

    double distance = 384400.0;  // 地球から月までの距離 (キロメートル)
    
  • decimal: 128ビットの精度が高い小数型で、特にお金の計算など正確な計算が必要な場面で使用されます。精度が非常に高いため、金融業務などで使用されます。

    decimal price = 19.99m;
    

真偽値を扱うデータ型

  • bool: true(真)か false(偽)という2つの値しか取らないデータ型です。条件分岐や論理演算に使います。

    bool isStudent = true;
    

文字と文字列を扱うデータ型

  • char: 単一の文字を表すデータ型です。例えば、'A''9' のように、1つの文字を扱います。

    char grade = 'A';
    
  • string: 複数の文字を連ねた文字列(テキスト)を扱います。例えば、名前やメッセージなどのテキストデータを保持するために使用します。

    string greeting = "Hello, World!";
    

日時を扱うデータ型

  • DateTime: 日付や時刻を表す型です。現在の日付や過去・未来の日付、時刻などを扱うときに使います。

    DateTime today = DateTime.Now;  // 現在の日付と時刻を取得
    
  • TimeSpan: 2つの日付や時刻の間隔を表します。たとえば、2時間30分のような時間の間隔を扱うことができます。

    TimeSpan duration = new TimeSpan(2, 30, 0);  // 2時間30分の時間差
    

データをまとめて扱う複合データ型

次に、複数の値やカスタムデータ型を扱うための便利な型を紹介します。これらの型を使うと、複数のデータをまとめて管理できます。

配列(複数のデータをまとめる)

配列は、同じ型のデータをまとめて管理するためのデータ型です。例えば、1つの配列に5つの整数をまとめて格納できます。

int[] numbers = { 1, 2, 3, 4, 5 };

名前付きの選択肢を定義する列挙型

列挙型は、決まった範囲内で選択肢を定義するために使います。例えば、曜日や季節のように、決まった選択肢を扱いたいときに便利です。

enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }

自分でカスタムデータを定義する構造体

構造体は、複数のフィールドを持つカスタムデータ型です。値として扱われ、軽量で効率的です。座標や小さなデータセットを扱うときに便利です。

struct Point
{
    public int X;
    public int Y;
}

オブジェクトやクラスを扱う参照型

これらの型は、C#のオブジェクト指向プログラミング(OOP)の基本を成す型です。オブジェクトを使ってデータとそれに対する操作をまとめることができます。

クラス(オブジェクト指向プログラミングの基本)

クラスは、データ(プロパティ)と動作(メソッド)をまとめたオブジェクトを作成するための型です。クラスからは複数のオブジェクトを作成することができます。

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

インターフェース(メソッドやプロパティの契約)

インターフェースは、クラスや構造体が実装すべきメソッドやプロパティを定義します。これにより、異なるクラスが同じ操作を実行できるようになります。

interface IShape
{
    double CalculateArea();
}

デリゲート(メソッドへの参照)

デリゲートは、メソッドを他のメソッドに渡すことができる型です。イベント処理やコールバック関数でよく使用されます。

delegate void MessageHandler(string message);

より高度な場面で使うデータ型

これらの型は、より高度な操作やパフォーマンスを追求する場面で使われます。通常のプログラミングではあまり使わないかもしれませんが、特定のシナリオで役立ちます。

メモリ操作や特殊な用途に使う型

  1. ポインタ型 ポインタは、メモリのアドレスを直接扱うための型です。ただし、安全でないコード(アンセーフコード)として扱われます。

    unsafe
    {
        int* ptr = &someInteger;
    }
    
  2. 匿名型 匿名型は、名前を持たない一時的なデータ型で、LINQや簡易なデータ処理でよく使用されます。値を保持するだけの目的で使われます。

    var anonymous = new { Name = "John", Age = 30 };
    
  3. レコード型 レコード型は、イミュータブル(変更不可能)なデータ型で、データの不変性を保証しつつシンプルに定義できます。

    public record Person(string Name, int Age);
    

まとめ

C#には豊富なデータ型が用意されており、これらを適切に使い分けることで、効率的で型安全なプログラムを作成することができます。まずは基本的なデータ型から始めて、徐々に複合型や参照型を理解し、最終的には高度なデータ型や特殊な用途にまで理解を深めていきましょう。経験を積むことで、どのデータ型がどの場面で最適かが見えてきます。

Recommend