変数とデータ型
変数の宣言
次のプログラムは,整数型の変数を扱うプログラムの例です。
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 型 | 説明 |
---|---|---|---|
整数型 | sbyte | System.SByte | 符号付き 8 ビット整数 |
byte | System.Byte | 符号なし 8 ビット整数 | |
short | System.Int16 | 符号付き 16 ビット整数 | |
ushort | System.UInt16 | 符号なし 16 ビット整数 | |
int | System.Int32 | 符号付き 32 ビット整数 | |
uint | System.UInt32 | 符号なし 32 ビット整数 | |
long | System.Int64 | 符号付き 64 ビット整数 | |
ulong | System.UInt64 | 符号なし 64 ビット整数 | |
実数型 | float | System.Single | 単精度浮動小数点数 |
double | System.Double | 倍精度浮動小数点数 | |
decimal | System.Decimal | 有効桁数 28 桁以上の 10 進実数 | |
文字型 | char | System.Char | Unicode 文字 |
文字列型 | string | System.String | Unicode 文字列 |
論理型 | bool | System.Boolean | 真理値 |
オブジェクト型 | object | System.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);