はじめに
こんちはふる!個人でゲーム制作をしている「えきふる」です!
C#でプログラムをしていてint型の変数にdouble型の変数の値を入れたい、string型の数字をそのままint型にして使いたい!とかって事ないでしょうか?
私はたまにあります!
ということでこの記事ではある型から別の型へ変換する機能を紹介します。
暗黙的な型変換 と 明示的な型変換
まず、型の変換には大きく2種類あります。
ある型の変数を代入しただけでC#側で暗黙的に型変換を行ってくれる「暗黙的な型変換(ダウンキャスト)」と
暗黙的な型変換が許されない型同士での変換を行う「明示的な型変換(アップキャスト)」です。
暗黙的な型変換はわかりやすく、型変換をした際に大きさが失われないものになります。
これはイメージがしやすくて例えばint型→double型の変換ですね。doubleの有効桁数の中にintの有効桁数が含まれているので問題なく「暗黙的に」変換が可能です。
明示的な型変換は、例えばdouble型→Int型やstring型→int型などの、値の大きさが減るものや文字から数字への変換などです。これらは変数の代入先の型を明示的に示さないと代入できません。
それでは、明示的な変換に関して次から見ていきましょー!
明示的な型変換の仕方を具体的に見ていくふる!
指定した型への変換 キャスト(cast)式
この方法はとても簡単でシンプルに変換できます。
記述の仕方は下記になります。
変数名 = (変換後の型名)変数名
例えば、Unityゲームエンジンで実行するC#の場合は下記のように記述すると
int型aにdouble型bをint型に変換して代入することが出来ます。
int a;
double b;
void Start()
{
b = 1.23;
a = (int)b;//ここで変換してます
Debug.Log(a);
}
実行するとaは小数点以下が切り捨てされて(四捨五入じゃない!)「1」と表示されました!
このように
変数名 = (変換後の型名)変数名
で記載する形をキャスト式と呼ぶそうな。
この式はとてもシンプルで使い易いのですが、文字列⇄数値間の型変換は残念ながらできません。
そのため文字列⇄数値間の変換をする場合は下記の2つを使用します。
文字列を数値へ変換(Parse)
文字列を数値変換する場合は「Parse」を使います。記載の仕方は下記のような形になります。
Parse(String)
Parse("1234")
こちらも実際にUnity上で使ってみましょう。
int a;
string moji;
void Start()
{
a = 123;
moji = "9999999"; //文字の9999999
a = int.Parse(moji);//ここでint型に変換
Debug.Log(a);
}
こちらを実行すると下記のようになります。
aというint型にmojiのstring型の文字としての数字が、数値として代入されていることがわかります。
数値を文字列に変換(ToString)
次はParseの逆、数値を文字列に変換する場合は「To string」を使います。
記載の仕方は下記。
Object.ToString
ではこちらも実際にUnity上で使ってみましょう。
int a;
string moji;
void Start()
{
int a = 123;
string moji = "アイウエオ";
moji = a.ToString();//ここでstringに変換
Debug.Log(moji) ;
}
こちらを実行すると下記のようになります。
int型aの123がstring型の文字としてmojiに代入されました。
まとめ
とてもシンプルなマトメふる
・型変換には暗黙型と明示型がある
・指定した型への変換はcast
・文字⇒数値の変換はParse
・数値⇒文字列の変換はToString
コメント