変数とデータ型

スポンサーリンク

変数の宣言

次のプログラムは,整数型の変数を扱うプログラムの例です。

using System;

class Program
{
    static void Main()
    {
        int m = 123, n;
        Console.WriteLine(m);
        n = m;
        Console.WriteLine(n);
    }
}
123
123

変数は次の形式で宣言します。初期化子は省略できます。

型名 変数名 = 初期値;
型名 変数名1 = 初期値1, 変数名2 = 初期値2, ...;

変数の宣言を次のように書くと,コンパイラが変数の型を決めます。

var num = 123;

識別子は数字以外の文字で始まります。漢字や仮名も使えます。

組込み型

組込み型には次のようなものがあります。

種別C# 型.NET 型説明
整数型sbyteSystem.SByte符号付き 8 ビット整数
byteSystem.Byte符号なし 8 ビット整数
shortSystem.Int16符号付き 16 ビット整数
ushortSystem.UInt16符号なし 16 ビット整数
intSystem.Int32符号付き 32 ビット整数
uintSystem.UInt32符号なし 32 ビット整数
longSystem.Int64符号付き 64 ビット整数
ulongSystem.UInt64符号なし 64 ビット整数
実数型floatSystem.Single単精度浮動小数点数
doubleSystem.Double倍精度浮動小数点数
decimalSystem.Decimal有効桁数 28 桁以上の 10 進実数
文字型charSystem.CharUnicode 文字
文字列型stringSystem.StringUnicode 文字列
論理型boolSystem.Boolean真理値
オブジェクト型objectSystem.Object任意のオブジェクトへの参照

.NET 型というのは .NET 系の言語 (VB.NET など) で共通に使える型名です。
それぞれ C# 専用の別名が付いていて,普段はこちらを使います。

リテラル

各データ型のリテラルの例は次の通りです。

リテラルの例
整数型123, 0x1A
実数型3.14, 3., .14, 1.23e-5
文字型'a', '\n'
文字列型"abc\n", "", @"abc"
論理型true, false

整数リテラルの 0x1A は 16 進数の 1A を表します。

整数リテラル 123, 123U, 123L, 123UL は,それぞれ int, uint, long, ulong 型です。
実数リテラル 1.23, 1.23F, 1.23D, 1.23M は,それぞれ double, float, double, decimal 型です。

文字/文字列

文字リテラルはシングルクォート '...' で,文字列リテラルはダブルクォート "..." で囲って表します。
いずれも \n や \t などの各種エスケープシーケンスが利用できます。

頭に @ の付いた文字列リテラル @"..." は逐語的文字列リテラルと呼ばれ,バックスラッシュで始まるエスケープシーケンスがパースされません。
逐語的文字列リテラル中でダブルクォート " を表すには "" と書きます。

string s = @"c:\windows\system32";  // \ はパースされない

値型/参照型

C# のデータ型を値型と参照型に分類すると,次のようになります。

値型整数型,実数型,論理型,文字型,構造体,列挙体
参照型文字列型,オブジェクト型,配列,クラス,インタフェース,デリゲート

参照型において,変数がどのデータも指していない状態は null で表します。

ヌル許容型

値型 T を T? と書いて,null を代入可能にした型を,ヌル許容型 (nullable type) といいます。
例えば,int 型のヌル許容型は int? と書かれます。

int? n;
n = null;  // null を代入可能
n = 123;
if (n.HasValue) 
    int m = n.Value  // int? から int へ変換

文字列の出力

Console.WriteLine メソッドは,どのデータ型の引数も受け付けます。

Console.WriteLine(1 + 2);
Console.WriteLine(0xFF);
Console.WriteLine(3.14);
Console.WriteLine(1.0E-3);
Console.WriteLine('a');
Console.WriteLine("hello");
3
255
3.14
0.001
a
hello

Console.WriteLine メソッドは,C の printf のような使い方もできます。

Console.WriteLine("{0} + {1} = {2}", 2, 3, 5);
Console.WriteLine("{0,8}", 123);
Console.WriteLine("{0:00000000}", 123);
2 + 3 = 5
     123
00000123

文字列の入力

標準入力から 1 行分の入力を受け付けるには Console.ReadLine メソッドを使います。

string input = Console.ReadLine();

"123" や "3.14" のような入力を数値に変換するには,数値型.Parse という名前のメソッドを利用します。

double n = double.Parse(input);
スポンサーリンク