【ハルシオンブログ】Unity objectってなんでもはいるんですね!からの()キャストとas演算子について簡単基本的メモ
こんにちは。坂内っす。
さて今年も頑張って生きていきましょう!
ポケガ3は早ければ6月ころにリリースになるかもしれません。
頑張って作っていきます!
さて、Unityの小ネタ。
objectは何でも入れることができますね。(そりゃ一番親ですから
objから取り出す時にintもstringもキャストはいらないが(プリミティブ)、作ったクラスはキャストが必要ですね。
ちなみに()のキャストと、as演算子がありますが、プリミティブ型にはas演算子は使えません。
a = b;
でエラーになりますね。
なんのエラーかというと、
「桁数が大きいものから、小さい物への変換は桁落ちが起きるので、明示的に桁落ちしてもいいよというキャストが必要」
といったものぽいです。
明示的にキャストをしてやれば入ります。
プリミティブのas演算子もだめです。
a = b as int; X
本当にメモ的なもので、あんまり困ることではないですが、基本のことなので覚えておきましょ。
では、あでゅ~ノシ
さて今年も頑張って生きていきましょう!
ポケガ3は早ければ6月ころにリリースになるかもしれません。
頑張って作っていきます!
さて、Unityの小ネタ。
objectは何でも入れることができますね。(そりゃ一番親ですから
using UnityEngine;
public class Blog20220117 : MonoBehaviour
{
public class B {
public int no;
public string name;
public B(int value1, string value2) {
no = value1;
name = value2;
}
}
void Start()
{
object obj;
obj = 5;
Debug.Log(obj);
obj = "あいう";
Debug.Log(obj);
obj = new B(10, "なまえ");
Debug.Log(((B)obj).no + ":" + ((B)obj).name);
}
}
objから取り出す時にintもstringもキャストはいらないが(プリミティブ)、作ったクラスはキャストが必要ですね。
ちなみに()のキャストと、as演算子がありますが、プリミティブ型にはas演算子は使えません。
void Start()
{
int a = 100;
double b = a;
Debug.Log(b);
a = b;
Debug.Log(a);
}
a = b;
でエラーになりますね。
なんのエラーかというと、
「桁数が大きいものから、小さい物への変換は桁落ちが起きるので、明示的に桁落ちしてもいいよというキャストが必要」
といったものぽいです。
明示的にキャストをしてやれば入ります。
void Start()
{
int a = 100;
double b = a;
Debug.Log(b);
a = (int)b;
Debug.Log(a);
}
プリミティブのas演算子もだめです。
a = b as int; X
本当にメモ的なもので、あんまり困ることではないですが、基本のことなので覚えておきましょ。
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】Hierarchyでオブジェクトの階層を一気に開きたいとき | 【ハルシオンブログ】Swichって型で分岐できるんですね。 »
コメント
| h o m e |