|
■No87839 (C#勉強中 さん) に返信 >> t[0]は既に「Stringを指すTypeオブジェクト」が格納されています。 > t[0]には Single型が入っているのではないのですか?
t[2] の書き間違いかな…?
t[0] には Type クラスのインスタンスが入っています。これは System.Single 構造体の型を指しています。 t[1] には Type クラスのインスタンスが入っています。これは System.DateTime 構造体の型を指しています。 t[2] には Type クラスのインスタンスが入っています。これは System.String クラスの型を指しています。
t[0〜2].GetType() は Type クラスのインスタンスを返します。 これはいずれも、System.RuntimeType 構造体の型を指しています。
> 実行されている環境によっては typeof(Single) や typeof(DateTime) > のように書いても今回のような意図しない RuntimeType型 が返される時があるのですか?
// t1, t2, t3 は同一インスタンス Type t1 = Single.MaxValue.GetType(); Type t2 = typeof(Single); Type t3 = Type.GetType("System.Single");
これらはいずれも「Type クラスのインスタンス」を返します。 このインスタンスは、常に『Single 構造体を表す型』です。
しかし最初の質問コードのように、 Type t = [Type クラスのインスタンス].GetType(); とした場合は、「Type.GetType("System.RuntimeType")」が返されます。
|