35153


Tがレスポンスの型として渡ってくるメソッドがあり、  
レスポンスが無い時は、TはNullDataクラスとなり  
レスポンスがある時は、Tは任意の型クラスとなります。

レスポンスが無い時は、NullDataクラスとなるので、  
下記のようなIF文で比較したのでIFの中に入ってきませんでした。

[code]

    if (typeof(T) == typeof(NullData))
    
[/code]

Tを指定した型と比較するにはどのようにすれば良いでしょうか？

環境：Unity5.5.1.f1、C#4.0


CC BY-SA 3.0
2017-05-31T05:09:48.080
35151
2017-06-05T02:05:06.780
5261
question
c# unity3d
typeof(T)を使って任意の型と比較する事は可能でしょうか？


C#仕様としては可能ですしWindows環境であれば普通に動作します。  
意図通りの動作をしないとしたら、Unity側の問題と推測されます。


CC BY-SA 3.0
2017-05-31T06:36:16.207
35153
2017-05-31T06:36:16.207
4236
35151
answer


.NET Frameworkならばあるバージョンからは operator == が実装されていますが、Unityでも同じなんでしょうか。  
(Unityは使ったことなくて自分ではわからないのですが)  
ある型に対して複数の箇所で取得したTypeが同一インスタンスであることはあるようですが、常に保証されるものなのかどうかちょっとわかっていません。

確実に等価性を判定できる「typeof(T).Equals(typeof(NullData))」でも結果は同じでしょうか？

それでも結果が同じであれば、Tが実際にはNullDataのインスタンスではなく、NullDataの派生型という可能性はないでしょうか。


CC BY-SA 3.0
2017-06-04T14:55:16.623
35273
2017-06-04T14:55:16.623
23566
35151
answer


T 型のオブジェクトがメソッドの引数 `T obj` で渡されてくるのなら

[code]

    if (obj is NullData)
    
[/code]

とかではダメなのでしょうか？


CC BY-SA 3.0
2017-06-05T02:05:06.780
35280
2017-06-05T02:05:06.780
3033
35151
answer