プログラミングを試してみたい人向けのC#プログラミングチュートリアル

C#で扱えるデータ型

POINT
  • C#で扱えるデータ型とその基本的な使い方を紹介
目次

C#で扱えるデータ型

変数を定義する場合、データ型を指定します。
C#で使えるデータ型はたくさんあります。
まずは基本的なデータ型のみを紹介します。

型名 内容 補足
string 文字列
int 整数型 32ビットで保持する数値、範囲は-2147483648~2147483647
long 整数型 64ビットで保持する数値、範囲は-922337203685477508 ~ 922337203685477507
float 少数型 32ビットで保持する少数、範囲は整数部と小数部がそれぞれ何桁かによるため割愛
double 少数型 64ビットで保持する少数、範囲は整数部と小数部がそれぞれ何桁かによるため割愛
bool 論理型 true または false
System.DateTime 日付型 C#には日付型はなく、DateTime構造体を使用

文字列の使い方

文字列の値は"(ダブルクォーテーション)で括ります。

使用例
//文字列の変数sに「テストの文字列」という文字列をセット
string s = "テストの文字列";

文字列を+で繋げると連結ができます。

サンプルプログラム
class Program
{
    static void Main()
    {
        string s1 = "あい";
        string s2 = "うえお";
        
        // s1とs2を繋げてs3にセット
        string s3 = s1 + s2;
        System.Console.WriteLine(s3);
        
        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
あいうえお

サンプルプログラムの実行方法はトップページを参照してください。

数字の計算

数字は+や-などの式の形式に記載すると計算ができます。

サンプルプログラム
class Program
{
    static void Main()
    {
        int i1 = 1 + 2 + 3;
        System.Console.WriteLine(i1);
        
        int i2 = 10 - 5;
        System.Console.WriteLine(i2);
        
        int i3 = 6 * 7;
        System.Console.WriteLine(i3);

        int i4 = 9 / 4;
        System.Console.WriteLine(i4);

        int i5 = 9 % 4;
        System.Console.WriteLine(i5);

        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
6
5
42
2
1

計算に使用できる記号は下記のものがあります。

記号 計算内容
+ 足し算
- 引き算
* 掛け算
/ 割り算
% 割り算の余り

少数の切り上げ、切り捨て、四捨五入

前述の例の割り算では結果は切り捨てされた値になりました。
結果をセットする変数も計算対象の数字も少数を扱える型にすることで、少数も含めた結果を得ることもできます。
計算対象の数字の型を変えるには、数字の前に()で型を指定します。
さらに結果を任意に切り上げたり、切り捨てたり、四捨五入したりする場合は、System.Mathというクラスを使用します。

サンプルプログラム
class Program
{
    static void Main()
    {
        // 少数扱いで計算
        double d1 = (double)10 / (double)3;
        System.Console.WriteLine(d1);
        
        // 切り捨て
        double d2 = System.Math.Floor(d1);
        System.Console.WriteLine(d2);

        // 切り上げ
        double d3 = System.Math.Ceiling(d1);
        System.Console.WriteLine(d3);
        
        // 四捨五入
        double d4 = System.Math.Round(d1);
        System.Console.WriteLine(d4);
        // 四捨五入は少数第何位までとするか指定が可能
        d4 = System.Math.Round(d1, 1);
        System.Console.WriteLine(d4);

        // 少数第2位で切り捨て、切り上げる場合は、10倍にして10で割る必要がある
        d2 = System.Math.Floor(d1 * 10) / 10;
        System.Console.WriteLine(d2);
        d3 = System.Math.Ceiling(d1 * 10) / 10;
        System.Console.WriteLine(d3);

        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
3.33333333333333
3
4
3
3.3
3.3
3.4

もう一つの切り捨て

切り捨てにはFloorともう一つTruncateがあります。
FloorとTruncateは、マイナス値に対して使用した場合に結果が変わります。
Floorの場合、値がマイナスだとマイナス方向に値を近づけます。
-1.5を切り捨てると-2になります。
それに対しTruncateはプラス値と同じように少数値をなくす形で結果を返します。
そのため-1.5を切り捨てると-1になります。

サンプルプログラム
class Program
{
    static void Main()
    {
        // 少数扱いで計算
        double d1 = (double)-10 / (double)3;
        System.Console.WriteLine(d1);
        
        // マイナス方向に切り捨て
        double d2 = System.Math.Floor(d1);
        System.Console.WriteLine(d2);

        // プラスと同じように少数部を切り捨て
        double d3 = System.Math.Truncate(d1);
        System.Console.WriteLine(d3);

        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
-3.33333333333333
-4
-3

マイナス値に対して切り捨てを行う場合は注意が必要です。

0.5に対する四捨五入

四捨五入のRoundを使う場合にも注意が必要です。
System.Math.Roundをそのまま使用すると、0.5の場合は偶数を返すよう仕様になっています。
IEEE 754という規格に定められた仕様です。
これは、四捨五入した値をたくさん足した場合に誤差を少なくするためです。
一般的な四捨五入のように、0.5の場合は切り上げたい場合は、引数にMidpointRounding.AwayFromZeroを指定する必要があります。

サンプルプログラム
class Program
{
    static void Main()
    {
        double d1 = System.Math.Round(1.5);
        System.Console.WriteLine(d1);

        double d2 = System.Math.Round(2.5);
        System.Console.WriteLine(d2);

        double d3 = System.Math.Round(1.5, System.MidpointRounding.AwayFromZero);
        System.Console.WriteLine(d3);

        double d4 = System.Math.Round(2.5, System.MidpointRounding.AwayFromZero);
        System.Console.WriteLine(d4);

        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
2
2
2
3

マイナス値に対して切り捨てを行う場合は注意が必要です。

日付の計算

日付の計算は、System.DateTimeクラスを使用します。

サンプルプログラム
class Program
{
    static void Main()
    {
        System.DateTime dt1 = System.Convert.ToDateTime("2000/01/02 03:04:05");
        System.Console.WriteLine(dt1);

        // 1年後
        System.DateTime dt2 = dt1.AddYears(1);
        System.Console.WriteLine(dt2);

        // 1か月後
        dt2 = dt1.AddMonths(1);
        System.Console.WriteLine(dt2);

        // 1日後
        dt2 = dt1.AddDays(1);
        System.Console.WriteLine(dt2);

        // 1時間後
        dt2 = dt1.AddHours(1);
        System.Console.WriteLine(dt2);

        // 1分後
        dt2 = dt1.AddMinutes(1);
        System.Console.WriteLine(dt2);

        // 1秒後
        dt2 = dt1.AddSeconds(1);
        System.Console.WriteLine(dt2);
        
        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
2000/01/02 3:04:05
2001/01/02 3:04:05
2000/02/02 3:04:05
2000/01/03 3:04:05
2000/01/02 4:04:05
2000/01/02 3:05:05
2000/01/02 3:04:06

現在日時を取得する

現在日時はSystem.DateTimeクラスのNow、Todayを使用します。
Nowの場合は時刻も含めます。
Todayは当日の00:00:00になります。

サンプルプログラム
class Program
{
    static void Main()
    {
        Console.WriteLine(System.DateTime.Now);
        Console.WriteLine(System.DateTime.Today);
        System.Console.ReadKey();  // キー入力待ち
    }
}
実行結果
2024/03/22 16:23:31
2024/03/22 0:00:00