1. ホーム 
  2. 備忘録 
  3. C Sharp

変数

変数の使い方

/// <summary>
/// プレイヤー設定.
/// </summary>
private PlayerSettings playerSettings;

/// <summary>
/// 行動時間.
/// </summary>
private float moveTime = 0f;

C#(CSharp) は静的型付け言語なので先に変数の型を宣言する必要がある

厳密な型を指定しない var などは基本的に避けるべきだが、変数の型がぱっと見て明確になっている場合は使うこともある

ドキュメントコメントはXML形式で記述されることが多い


変数の型一覧

C# の型の分類についてこちらのサイトが凄く参考になるため引用させていただく


各整数型の型名とサイズ等の情報について以下に記す

型名 領域サイズ 符号の有無 扱える値の範囲
byte 1バイト なし 0 ~ 255
sbyte 1バイト あり -128 ~ 127
short 2バイト あり -32,768 ~ 32,767
ushort 2バイト なし 0 ~ 65,535
int 4バイト あり -2,147,483,648 ~ 2,147,483,647
uint 4バイト なし 0 ~ 4,294,967,295
long 8バイト あり -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
ulong 8バイト なし 0 ~ 18,446,744,073,709,551,615

整数型以外の組込み型は以下のものがある

種別 型名
文字型 char
浮動小数点型(単精度) float
浮動小数点型(倍精度) double
デシマル(10進小数) decimal
論理値型 bool
文字列型 string
オブジェクト型 object

デシマルはまったくと言っていいほど使ったことがなかったが、0.1など2進少数では正確に表すことができない数字を表現できるため、金融などの誤差を許されない分野において利用されているようだ


オーバーフロー

変数の型が扱える値の範囲を超えた場合オーバーフローが起きる

オーバーフローはデフォルトでは無視する挙動になっており、これを検出するためには checked キーワードを使用する方法がある

逆にオーバーフローを無視したい場合は unchecked キーワードを使用できる

try
{
  checked
  {
    sbyte a = 64;
    sbyte b = 65;
    sbyte c = (sbyte)(a + b);
  }
}
catch(OverflowException ex)
{
  Console.Write(ex.Message);
}

浮動小数点型のオーバーフローは値が無限大(infinity)となる

また絶対値が浮動小数点数で表せる値の範囲を下回る場合(アンダーフロー)、値は0になる

浮動小数点数の場合は checked 文中であってもオーバーフローによる例外は発生しない


null

null を代入できるのは、参照型か Nullable 型のみとなる
なので、例えば struct(構造体)などは値型なので null が代入できない


文字型、文字列型

C#では内部的に Unicode という2バイトの文字コードが使われている。

文字型(char)は1文字を表すことができるが、その実態は2バイトの数値である

同じ2バイトの領域サイズをもつ short や ushort とは型落ちなく変換することができる

short x = (short)'a'; // 97
char c = (char)97; // 'a'

上記の通り文字リテラルは '(シングルクォーテーション) を使用して囲うことで表現する


複数の文字を連結した文字列を変数で取り扱うには string(文字列型)を使用する

文字列リテラルは "(ダブルクォーテーション) を使用して囲うことで表現する

文字の配列(char[])にはない機能として連結、検索、置換、数値への変換などが用意されている


エスケープシーケンス

一部書けない文字(改行コードやnull文字など)を表現するため、エスケープシーケンスという特殊記法が用意されている

エスケープシーケンスの一部を以下に記す

文字 用途
\' '(引用符)を文字リテラルの中に書くために使う
\" "(2重引用符)を文字列リテラルの中に書くために使う
\\ \(バックスラッシュ)を書くために使う
\0 null文字(文字列の終端を表したり特別な使い方をする文字)
\n 改行(new line)
\t 水平タブ


    参考文献

  1. [C# によるプログラミング入門] C# の型