這是錯誤的:typeof(double).IsAssignableFrom(typeof(int))
爲什麼IsAssignableFrom()不適用於int和double?
這是錯誤的:typeof(int).IsAssignableFrom(typeof(double))
但這個工程:
顯然double
是分配從int
但框架IsAssignableFrom()
得到它錯了。
爲什麼?或者這是一個.NET中的錯誤,由int和double的特殊性質造成,它們沒有繼承關係,但是可以分配(在一個方向上)?
我想它沒有考慮到隱式轉換。 – 2011-06-08 07:55:26
從[IsAssignableFrom MSDN page](http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx): 如果c和當前類型表示相同類型,則返回「true」或者當前Type是否在c的繼承層次結構中,或者當前Type是否是c實現的接口,或者如果c是泛型類型參數,並且當前Type是c。false中的一個約束,如果它們中沒有一個條件是真的,或者如果c是空引用。「 – bentayloruk 2011-06-08 07:58:46
謝謝大家;我已經向MSDN添加了一個社區註釋,使得這個隱藏的推論更清晰一些,以免其他人愚蠢地認爲方法名稱意味着它的含義。我猜'Type.IsSomewhatAssignableFrom'本來就太長了:) – 2011-06-08 08:14:17