C#でプログラミングを始める第一歩は、値を入れて使い回すための変数と、その値の種類を表すデータ型を理解することです。
本記事ではint、double、string、boolの4種類に絞り、宣言から代入、計算や比較の基本までを丁寧に説明します。
実行結果も併記しますので、手を動かしながら読み進めてください。
C#の変数の基本と宣言方法(初心者向け)
変数とは(値を入れる箱)
プログラム中で繰り返し使う値を保存しておくために、変数という名前付きの場所を用意します。
イメージとしては値を入れる箱で、箱のラベルが変数名、入る物の種類が型です。
C#ではint
やdouble
などの型を必ず付けて宣言します。
// 変数の基本イメージを確認するサンプル
using System;
class Program
{
static void Main()
{
int apples = 3; // 整数の箱に3を入れる
double price = 120.5; // 小数の箱に120.5を入れる
string message = "Hello"; // 文字列の箱に"Hello"を入れる
bool isFresh = true; // 真偽値の箱にtrueを入れる
Console.WriteLine("apples = " + apples);
Console.WriteLine("price = " + price);
Console.WriteLine("message = " + message);
Console.WriteLine("isFresh = " + isFresh);
}
}
apples = 3
price = 120.5
message = Hello
isFresh = True
型を付けた宣言と代入の書き方
宣言は型名 変数名;
の形で書きます。
宣言した後、=
を使って値を代入します。
代入は左が入れ物、右が値という関係を覚えると理解しやすくなります。
using System;
class Program
{
static void Main()
{
int count; // 宣言のみ
count = 10; // 後から代入
string name; // 宣言のみ
name = "Taro"; // 後から代入
Console.WriteLine("count = " + count);
Console.WriteLine("name = " + name);
}
}
count = 10
name = Taro
初期化の基本(宣言と同時に代入)
宣言と代入を同時に行うことを初期化と呼びます。
コードが簡潔になり、未代入のまま使ってしまうミスも防げます。
using System;
class Program
{
static void Main()
{
int age = 20; // 宣言と同時に初期化
double height = 170.2; // 宣言と同時に初期化
string city = "Tokyo"; // 宣言と同時に初期化
bool isMember = false; // 宣言と同時に初期化
Console.WriteLine(age + ", " + height + ", " + city + ", " + isMember);
}
}
20, 170.2, Tokyo, False
識別子の付け方(英数字とアンダースコア)
変数名は英字で始め、英数字とアンダースコアを使うのが基本です。
大文字小文字は区別されます。
慣例として、ローカル変数はcamelCase(先頭小文字)で意味のある名前を付けます。
using System;
class Program
{
static void Main()
{
int itemCount = 5; // OK: 意味が伝わるcamelCase
int _cacheSize = 256; // OK: 先頭アンダースコアも有効
int total2 = 2; // OK: 数字を含められる
// int 2nd = 2; // NG: 数字で開始は不可
// int class = 1; // NG: 予約語は使えない
Console.WriteLine(itemCount + _cacheSize + total2);
}
}
263
予約語や空白、ハイフンは使えません。
また、日本語名も技術的には可能ですが、本記事では混乱を避けるため英数字を推奨します。
int型(整数)の使い方
宣言と初期化の例
int
は小数点を含まない整数を扱います。
個数や回数など、数えられる値に適します。
using System;
class Program
{
static void Main()
{
int a = 12;
int b = -3;
int zero = 0;
Console.WriteLine("a = " + a + ", b = " + b + ", zero = " + zero);
}
}
a = 12, b = -3, zero = 0
基本演算(+, -, *, /, %)
四則演算と余りの計算ができます。
using System;
class Program
{
static void Main()
{
int x = 15;
int y = 4;
int add = x + y; // 加算
int sub = x - y; // 減算
int mul = x * y; // 乗算
int div = x / y; // 整数同士の割り算
int mod = x % y; // 余り
Console.WriteLine("add=" + add);
Console.WriteLine("sub=" + sub);
Console.WriteLine("mul=" + mul);
Console.WriteLine("div=" + div);
Console.WriteLine("mod=" + mod);
}
}
add=19
sub=11
mul=60
div=3
mod=3
整数同士の割り算に注意
int同士で割ると小数点以下は切り捨てになります。
必要に応じてdouble
に変換しましょう。
using System;
class Program
{
static void Main()
{
int a = 7;
int b = 2;
int intDiv = a / b; // 3 となる
double realDiv1 = a / (double)b; // 3.5 にするため片方をdoubleへ
double realDiv2 = (double)a / b; // 同上
Console.WriteLine("intDiv = " + intDiv);
Console.WriteLine("realDiv1 = " + realDiv1);
Console.WriteLine("realDiv2 = " + realDiv2);
}
}
intDiv = 3
realDiv1 = 3.5
realDiv2 = 3.5
意図せず整数割り算になるのは初学者のつまずきポイントです。
片方をdouble
にするか、後述のdouble
演算に任せましょう。
double型(小数)の使い方
宣言と初期化の例
double
は小数を含む実数を扱います。
平均値や測定値など連続量に向いています。
using System;
class Program
{
static void Main()
{
double pi = 3.14159;
double rate = -0.05;
double whole = 2.0; // 小数点付きにするとdoubleの計算がしやすい
Console.WriteLine("pi = " + pi + ", rate = " + rate + ", whole = " + whole);
}
}
pi = 3.14159, rate = -0.05, whole = 2
小数計算の注意(丸め誤差)
doubleは2進数で小数を表現するため、きれいに表せない値があり丸め誤差が出ます。
例えば0.1や0.2は二進数で有限桁になりません。
using System;
class Program
{
static void Main()
{
double x = 0.1;
double y = 0.2;
double sum = x + y;
Console.WriteLine("x + y = " + sum);
Console.WriteLine("x + y == 0.3 ? " + (sum == 0.3));
}
}
x + y = 0.30000000000000004
x + y == 0.3 ? False
金額など正確な小数が必須の場面は別の型を使います。
本記事では扱いませんが、用途に応じた型選びが重要です。
整数(int)との計算
intとdoubleを一緒に計算すると、結果はdoubleになります。
整数割り算を避けたい時にも有効です。
using System;
class Program
{
static void Main()
{
int a = 5;
int b = 2;
int intDiv = a / b; // 2
double mixed1 = a / 2.0; // 2.5 片方がdouble
double mixed2 = (double)a / b;// 2.5 明示的キャスト
Console.WriteLine("intDiv = " + intDiv);
Console.WriteLine("mixed1 = " + mixed1);
Console.WriteLine("mixed2 = " + mixed2);
}
}
intDiv = 2
mixed1 = 2.5
mixed2 = 2.5
string型とbool型の使い方
stringの宣言と文字列リテラル(“…”)
string
は文字の並びを扱います。
ダブルクォーテーションで囲んだ文字列リテラルを代入します。
using System;
class Program
{
static void Main()
{
string hello = "Hello, C#"; // 文字列リテラル
string name = "Taro";
string message = hello + " / Name: " + name; // + で連結
Console.WriteLine(message);
}
}
Hello, C# / Name: Taro
よくあるポイント
ダブルクォーテーション自体を文字列に含めたい場合は、"
とエスケープします。
改行は\n
です。
using System;
class Program
{
static void Main()
{
string quoted = "He said \"Hi\".";
string multi = "Line1\nLine2";
Console.WriteLine(quoted);
Console.WriteLine(multi);
}
}
He said "Hi".
Line1
Line2
文字数を調べる(Length)
string.Length
で文字数を取得できます。
入力の検証などで役立ちます。
using System;
class Program
{
static void Main()
{
string s = "coffee";
Console.WriteLine("s = " + s);
Console.WriteLine("Length = " + s.Length);
}
}
s = coffee
Length = 6
boolの宣言(true/false)
bool
はtrue
かfalse
の2値を表します。
条件分岐の基礎です。
using System;
class Program
{
static void Main()
{
bool isAdult = true;
bool isMember = false;
Console.WriteLine("isAdult = " + isAdult);
Console.WriteLine("isMember = " + isMember);
}
}
isAdult = True
isMember = False
比較の結果はbool(== や > など)
比較演算の結果はboolになります。
数値同士や文字列の比較で頻繁に使います。
using System;
class Program
{
static void Main()
{
int a = 10;
int b = 7;
bool eq = (a == b); // 等しいか
bool ne = (a != b); // 等しくないか
bool gt = (a > b); // より大きいか
bool le = (a <= b); // 以下か
Console.WriteLine("a == b : " + eq);
Console.WriteLine("a != b : " + ne);
Console.WriteLine("a > b : " + gt);
Console.WriteLine("a <= b : " + le);
}
}
a == b : False
a != b : True
a > b : True
a <= b : False
= は代入、== は比較です。
混同すると意図しない結果になります。
if
文などの条件式で==
の代わりに=
を誤って使うと、比較ではなく値の代入が行われてしまいます。
その結果、条件が常に真と評価されて意図しない処理が実行されたり、型の不一致でコンパイルエラーが発生したりします。
この間違いは発見しづらいバグの原因となるため、特に注意が必要です。
stringの等価比較
string
は==
で内容比較が可能です。
大文字小文字を区別します。
using System;
class Program
{
static void Main()
{
string s1 = "Apple";
string s2 = "apple";
Console.WriteLine("s1 == s2 : " + (s1 == s2)); // 大文字小文字が違うためfalse
}
}
s1 == s2 : False
まとめ
本記事では、int、double、string、boolの4つの基本型について、宣言、代入、初期化、演算や比較の基礎を一通り確認しました。
特に整数割り算の切り捨てとdoubleの丸め誤差は最初に押さえておきたい注意点です。
変数名は意味が伝わる英数字とアンダースコアで付け、型に合った値を扱うことを意識すると、エラーが減り読みやすいコードになります。
次はここで学んだ基礎を使い、条件分岐や繰り返しに進むと理解が一段と深まります。