【ハルシオンブログ】型のキャストができるかできなかの判別するとき
こんにちは。
大坂です。
今日もC#なお話。
型のキャストができるかできなかの判別したいときがたまにあります。
そんなときは「typeof」や「is演算子」を使用すると思いますが、
適当にやって結果が違ってあれ?と思った事があったので違いについてのメモ。
こんなクラスがあったとき。
こんな感じで見てみます。
結果。

「typeof」の方は指定したクラスで判別して、
「is演算子」の方は基底クラスで判別するという違いがあるみたいですね!
では今週もこれにてノシ
大坂です。
今日もC#なお話。
型のキャストができるかできなかの判別したいときがたまにあります。
そんなときは「typeof」や「is演算子」を使用すると思いますが、
適当にやって結果が違ってあれ?と思った事があったので違いについてのメモ。
こんなクラスがあったとき。
public class TestBase { }
public class Test_1 : TestBase { }
public class Test_2 : Test_1 { }
public class Test_3 : Test_2 { }
こんな感じで見てみます。
TestBase test = new Test_2();
bool isTypeofTestBase = typeof(TestBase) == test.GetType();
bool isTypeofTest_1 = typeof(Test_1) == test.GetType();
bool isTypeofTest_2 = typeof(Test_2) == test.GetType();
bool isTypeofTest_3 = typeof(Test_3) == test.GetType();
Debug.Log("isTypeOfTestBase:" + isTypeOfTestBase);
Debug.Log("isTypeOfTest_1:" + isTypeOfTest_1);
Debug.Log("isTypeOfTest_2:" + isTypeOfTest_2);
Debug.Log("isTypeOfTest_3:" + isTypeOfTest_3);
bool isTestBase = test is TestBase;
bool isTest_1 = test is Test_1;
bool isTest_2 = test is Test_2;
bool isTest_3 = test is Test_3;
Debug.Log("isTestBase:" + isTestBase);
Debug.Log("isTest_1:" + isTest_1);
Debug.Log("isTest_2:" + isTest_2);
Debug.Log("isTest_3:" + isTest_3);
結果。

「typeof」の方は指定したクラスで判別して、
「is演算子」の方は基底クラスで判別するという違いがあるみたいですね!
では今週もこれにてノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】みなさんPlayfabって知ってますか?MicrosoftのBaaSなんですが、安くて使いやすいのでお勧め! | 【ハルシオンブログ】Photon(PUN2)得意な方教えてください!Photonでプレイヤーがアイテムとかとった時の処理について »
コメント
| h o m e |