FC2ブログ
    04 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 06

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】Unity objectってなんでもはいるんですね!からの()キャストとas演算子について簡単基本的メモ 

    こんにちは。坂内っす。

    さて今年も頑張って生きていきましょう!

    ポケガ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)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/855-c513b988
    この記事にトラックバックする(FC2ブログユーザー)