基礎から学ぶC#入門 90日コース | C#基本文法 - Day 3:データ型

C# 90日で身につけるC#
スポンサーリンク
スポンサーリンク

Day 3 のゴールと全体イメージ

Day 3 では、C# の「データ型」をじっくり学びます。 Day 2 で「変数」という箱を学びましたが、その箱に「どんな種類の値を入れるか」を決めるのがデータ型です。

学ぶ項目は次のとおりです。

  • int
  • long
  • double
  • decimal
  • string
  • char
  • bool
  • 値型
  • 参照型の概要

これらを、初心者向けにかみ砕きながら、例題とコードを交えて説明していきます。

数値型:int と long

int:よく使う「整数」の型

int は、もっともよく使われる整数型です。 小さめ〜中くらいの範囲の整数を扱うときに使います。

class Program
{
    static void Main(string[] args)
    {
        int age = 30;        // 年齢
        int score = 85;      // テストの点数
        int temperature = -5; // 気温(マイナスもOK)

        Console.WriteLine(age);
        Console.WriteLine(score);
        Console.WriteLine(temperature);

        Console.ReadLine();
    }
}
C#

int は、

  • 小数点を含まない数(1, 0, -5 など)
  • 個数、回数、点数など「数えられるもの」

に向いています。

long:もっと大きな整数

long は、int よりもずっと大きな範囲の整数を扱える型です。 例えば、ID や大きなカウンタ値などに使われます。

class Program
{
    static void Main(string[] args)
    {
        long population = 125000000; // 人口など、大きな数
        long bigNumber = 9000000000000; // とても大きな数

        Console.WriteLine(population);
        Console.WriteLine(bigNumber);

        Console.ReadLine();
    }
}
C#

初心者のうちは、

  • 普通の整数 → int
  • すごく大きな整数が必要になったら → long

というイメージで十分です。

小数型:double と decimal

double:一般的な小数

double は、もっともよく使われる小数型です。 身長、重さ、距離など、一般的な「小数を含む数値」に使われます。

class Program
{
    static void Main(string[] args)
    {
        double height = 172.5;   // 身長
        double weight = 65.3;    // 体重
        double pi = 3.14159;     // 円周率

        Console.WriteLine(height);
        Console.WriteLine(weight);
        Console.WriteLine(pi);

        Console.ReadLine();
    }
}
C#

double は「浮動小数点数」と呼ばれ、 とても広い範囲の値を扱えますが、 厳密な計算では「わずかな誤差」が出ることがあります。

decimal:お金など「誤差を嫌う」場面向け

decimal は、主に「お金」などの計算に使われる小数型です。 double よりも誤差が出にくく、金額計算に向いています。

class Program
{
    static void Main(string[] args)
    {
        decimal price = 1000.50m;   // 金額(末尾の m が decimal を表します)
        decimal taxRate = 0.10m;    // 消費税率 10%

        decimal tax = price * taxRate;
        decimal total = price + tax;

        Console.WriteLine($"価格:{price} 円");
        Console.WriteLine($"消費税:{tax} 円");
        Console.WriteLine($"合計:{total} 円");

        Console.ReadLine();
    }
}
C#

ここでの重要ポイントは、

  • decimal のリテラルには m を付ける必要があること(1000.50m のように)
  • 金額やレートなど、「誤差が困る計算」に向いていること

です。

初心者のうちは、

  • 一般的な小数 → double
  • 金額計算 → decimal

と覚えておくとよいです。

文字列型:string

文章や名前を扱う型

string は、「文字列(テキスト)」を扱う型です。 名前、メッセージ、住所など、文字の並びを扱うときに使います。

class Program
{
    static void Main(string[] args)
    {
        string name = "佐藤太郎";          // 名前
        string message = "C# を勉強中です。";
        string address = "東京都新宿区";

        Console.WriteLine(name);
        Console.WriteLine(message);
        Console.WriteLine(address);

        Console.ReadLine();
    }
}
C#

文字列は、

  • ダブルクォーテーション " " で囲む
  • 空文字列は "" と書く

というルールがあります。

string empty = ""; // 何も入っていない文字列
C#

1文字型:char

1文字だけを扱う型

char は、「1文字だけ」を扱う型です。 string が「文字列(複数文字)」なのに対して、char は「単一の文字」です。

class Program
{
    static void Main(string[] args)
    {
        char grade = 'A';     // 成績(1文字)
        char symbol = '#';    // 記号(1文字)

        Console.WriteLine(grade);
        Console.WriteLine(symbol);

        Console.ReadLine();
    }
}
C#

ここでのポイントは、

  • char はシングルクォーテーション ' ' で囲むこと
  • "A"string'A'char であること

です。

初心者のうちは、

  • 名前や文章 → string
  • 1文字だけを扱いたいとき → char

という使い分けで十分です。

真偽値型:bool

「はい/いいえ」「真/偽」を表す型

bool は、

  • true(真)
  • false(偽)

の2つだけを取る型です。

条件分岐(if 文)などでよく使われます。

class Program
{
    static void Main(string[] args)
    {
        bool isStudent = true;      // 学生かどうか
        bool isMember = false;      // 会員かどうか

        Console.WriteLine(isStudent);
        Console.WriteLine(isMember);

        Console.ReadLine();
    }
}
C#

bool は、

  • 「〜かどうか」を表すフラグ
  • 条件式の結果

などに使われます。

例えば、

int age = 20;
bool canDrink = age >= 20; // 20歳以上かどうか

Console.WriteLine(canDrink); // true が表示されます
C#

のように、比較の結果として bool が得られます。

値型と参照型の概要

値型とは

int, long, double, decimal, bool, char などは、値型 と呼ばれます。

値型のイメージは、

変数そのものが「値」を直接持っている

というものです。

int a = 10;
int b = a;  // a の値が b にコピーされます

a = 20;

Console.WriteLine(a); // 20
Console.WriteLine(b); // 10(b は変わりません)
C#

ここで、

  • b = a; の時点で「値のコピー」が行われている
  • その後 a を変えても、b には影響しない

というのが値型の特徴です。

参照型とは

string や、後で学ぶ class で作るオブジェクトなどは、参照型 と呼ばれます。

参照型のイメージは、

変数は「値がある場所への参照(ポインタのようなもの)」を持っている

というものです。

初心者向けには、

  • 値型 → 「箱に値が直接入っている」
  • 参照型 → 「箱の中には、値が置いてある場所へのメモが入っている」

くらいのイメージで十分です。

string は参照型だが、値型のように扱える

string は参照型ですが、

  • 代入するときに「値のコピー」が行われる
  • 変更するときは新しい文字列が作られる

という性質があり、初心者のうちは「値型に近い感覚」で扱えます。

string s1 = "Hello";
string s2 = s1;  // s1 の内容が s2 にコピーされます

s1 = "World";

Console.WriteLine(s1); // World
Console.WriteLine(s2); // Hello(s2 は変わりません)
C#

参照型の詳しい挙動は、 オブジェクト指向(クラスや配列など)を学ぶタイミングで改めて深掘りしていくとよいです。

データ型の総合例:簡単なプロフィール+計算

いろいろな型をまとめて使ってみる

Day 3 の学習項目をすべて使った例として、 簡単なプロフィール+計算プログラムを書いてみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 整数型(int)
        int age = 28;

        // 大きな整数型(long)
        long userId = 10000000001;

        // 小数型(double)
        double height = 172.5;

        // 金額計算用の小数型(decimal)
        decimal monthlySalary = 250000m;
        decimal bonusRate = 0.2m;
        decimal bonus = monthlySalary * bonusRate;

        // 文字列型(string)
        string name = "佐藤太郎";
        string job = "エンジニア";

        // 1文字型(char)
        char grade = 'A';

        // 真偽値型(bool)
        bool isActive = true;

        Console.WriteLine("=== プロフィール ===");
        Console.WriteLine($"ユーザーID:{userId}");
        Console.WriteLine($"名前:{name}");
        Console.WriteLine($"年齢:{age} 歳");
        Console.WriteLine($"身長:{height} cm");
        Console.WriteLine($"職業:{job}");
        Console.WriteLine($"評価:{grade} ランク");
        Console.WriteLine($"アクティブ会員:{isActive}");
        Console.WriteLine($"月給:{monthlySalary} 円");
        Console.WriteLine($"ボーナス:{bonus} 円");

        Console.ReadLine();
    }
}
C#

このコードの中で、

  • int → 年齢
  • long → ユーザーID
  • double → 身長
  • decimal → 月給とボーナス
  • string → 名前・職業
  • char → 評価ランク
  • bool → アクティブ会員かどうか

というように、各データ型が「意味のある情報」として使われています。

Day 3 のまとめ

Day 3 では、C# の基本的なデータ型として、

  • int → 一般的な整数
  • long → とても大きな整数
  • double → 一般的な小数
  • decimal → 金額など誤差を嫌う小数
  • string → 文字列(文章・名前など)
  • char → 1文字
  • bool → 真偽値(true / false)
  • 値型 → 変数が値を直接持つ型(int, double, bool など)
  • 参照型 → 変数が「値の場所」を指す型(string やクラスなど)

を、例題とコードとともに確認しました。

データ型は、

  • 「この値は何を表しているのか」
  • 「どんな範囲・精度が必要なのか」

を考えながら選ぶことが大切です。

ぜひ、

  • 自分のプロフィールや家計簿などを題材にして、いろいろな型を試してみる
  • intdoubledoubledecimal の違いを意識して使い分けてみる
  • bool を使って「〜かどうか」を表現してみる

といった練習を通して、「値の種類に応じて型を選ぶ感覚」を育てていってください。


Day 3 練習のゴール

この練習では、「商品情報」を題材にして、Day 3 で学んだデータ型を実際に使ってみます。 管理したい項目は次のとおりです。

  • 商品名
  • 価格
  • 個数
  • 消費税
  • 在庫あり・なし

これらを、

  • int
  • double / decimal
  • string
  • bool

といった型でどう表現するかを、ステップバイステップで確認していきます。

商品情報を日本語で設計する

まず「何をどう表すか」を言葉で整理する

商品情報を管理するとき、次のように考えます。

  • 商品名 → 文字列(テキスト)
  • 価格 → 金額(小数を含む可能性あり)
  • 個数 → 整数
  • 消費税 → 税率(小数)または税額(小数)
  • 在庫あり・なし → はい/いいえ(真偽値)

この「日本語での整理」が、そのままデータ型選びにつながります。

商品名:string で表現する

文字列型 string

商品名は文字列なので、string 型で表現します。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 商品名(文字列)
        string productName = "ノートPC";  // 商品名を表す変数

        Console.WriteLine($"商品名:{productName}");

        Console.ReadLine();
    }
}
C#

ここでのポイントは、

  • 商品名は「文字の並び」なので string が自然であること
  • 変数名を productName のように意味が分かる名前にしていること

です。

価格と消費税:decimal で金額を扱う

金額は誤差を嫌うので decimal が向いています

価格や消費税は「お金」に関わるので、誤差が出にくい decimal 型を使うのが基本です。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 価格(税抜き)
        decimal price = 100000m;   // 価格 100,000 円(末尾の m が decimal を表します)

        // 消費税率
        decimal taxRate = 0.10m;   // 消費税率 10%

        // 消費税額と税込価格を計算
        decimal tax = price * taxRate;
        decimal priceWithTax = price + tax;

        Console.WriteLine($"税抜価格:{price} 円");
        Console.WriteLine($"消費税:{tax} 円");
        Console.WriteLine($"税込価格:{priceWithTax} 円");

        Console.ReadLine();
    }
}
C#

重要なポイントは、

  • decimal リテラルには必ず m を付けること
  • 金額や税率など、「誤差が困る計算」に decimal を使うこと

です。

個数:int で表現する

個数は「数えられる整数」なので int

在庫数や購入個数など、「数えられるもの」は int で表現します。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 在庫個数
        int stockCount = 15;   // 在庫が 15 個ある

        // 購入個数
        int orderCount = 2;    // お客様が 2 個購入

        Console.WriteLine($"在庫数:{stockCount} 個");
        Console.WriteLine($"購入数:{orderCount} 個");

        Console.ReadLine();
    }
}
C#

ここでのポイントは、

  • 個数は小数点を含まないので int が自然であること
  • 「〜Count」という名前が「数」であることを分かりやすくしていること

です。

在庫あり・なし:bool で表現する

真偽値型 bool

在庫が「あるか」「ないか」は、はい/いいえの2択なので bool がぴったりです。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 在庫があるかどうか
        bool isInStock = true;   // 在庫ありなら true、なしなら false

        Console.WriteLine($"在庫あり:{isInStock}");

        Console.ReadLine();
    }
}
C#

さらに、在庫数から在庫あり・なしを判定することもできます。

int stockCount = 15;
bool isInStock = stockCount > 0;  // 在庫数が 0 より大きければ在庫あり

Console.WriteLine($"在庫数:{stockCount} 個");
Console.WriteLine($"在庫あり:{isInStock}");
C#

ここでの重要ポイントは、

  • booltrue / false の2値だけを取ること
  • 「〜かどうか」を表すフラグに向いていること

です。

すべての項目をまとめた商品情報プログラム

Day 3 の型を組み合わせて使う

ここまでの内容をまとめて、「商品情報を表示するプログラム」を書いてみます。

using System;

class Program
{
    static void Main(string[] args)
    {
        // 商品名(string:文字列)
        string productName = "ノートPC";

        // 価格(decimal:金額)
        decimal price = 100000m;      // 税抜価格
        decimal taxRate = 0.10m;      // 消費税率 10%

        // 個数(int:整数)
        int stockCount = 15;          // 在庫数
        int orderCount = 2;           // 購入数

        // 在庫あり・なし(bool:真偽値)
        bool isInStock = stockCount > 0;  // 在庫数が 0 より大きければ在庫あり

        // 消費税額と税込価格を計算
        decimal tax = price * taxRate;
        decimal priceWithTax = price + tax;

        Console.WriteLine("=== 商品情報 ===");
        Console.WriteLine($"商品名:{productName}");
        Console.WriteLine($"税抜価格:{price} 円");
        Console.WriteLine($"消費税率:{taxRate * 100} %");
        Console.WriteLine($"消費税額:{tax} 円");
        Console.WriteLine($"税込価格:{priceWithTax} 円");
        Console.WriteLine($"在庫数:{stockCount} 個");
        Console.WriteLine($"購入数:{orderCount} 個");
        Console.WriteLine($"在庫あり:{isInStock}");

        Console.ReadLine();
    }
}
C#

このコードの中で、

  • string → 商品名
  • decimal → 価格・消費税率・消費税額・税込価格
  • int → 在庫数・購入数
  • bool → 在庫あり・なし

というように、各データ型が「意味のある情報」として使われています。

値型と参照型の視点で見てみる

この練習で登場した型の分類

今回使った型を、値型と参照型に分けると次のようになります。

  • 値型
    • int(在庫数・購入数)
    • decimal(価格・税率・税額)
    • bool(在庫あり・なし)
  • 参照型
    • string(商品名)

値型は「変数が値を直接持つ」イメージで、 参照型は「変数が値の場所を指している」イメージでした。

この段階では、

  • 整数・小数・真偽値 → 値型
  • 文字列 → 参照型

くらいの理解で十分です。

Day 3 練習のまとめ

この練習では、

  • 商品名 → string
  • 価格・消費税 → decimal
  • 個数 → int
  • 在庫あり・なし → bool

という形で、Day 3 のデータ型を実際の「商品情報」に当てはめてみました。

ポイントは、

  • 「何を表している値か」を考えて型を選ぶこと
  • 金額には decimal、個数には int、はい/いいえには bool、文字には string を使うこと
  • それぞれの型が「意味のある情報」として自然に使われているかを意識すること

です。

ぜひ、

  • 商品を増やして複数の商品情報を管理してみる
  • 消費税率を変えて計算結果の違いを試してみる
  • 在庫数が 0 のときに isInStock がどうなるか確認してみる

といったアレンジをしながら、データ型の選び方と使い方を体に馴染ませていってください。

タイトルとURLをコピーしました