我注意到,int是從char分配的嗎?
int number = 'a';
是健全的C#聲明
但是表達
typeof(int).IsAssignableFrom(typeof(char))
返回false。這不是矛盾嗎?
我注意到,int是從char分配的嗎?
int number = 'a';
是健全的C#聲明
但是表達
typeof(int).IsAssignableFrom(typeof(char))
返回false。這不是矛盾嗎?
這不是矛盾嗎?
沒有。 C#提供了從char
到int
的隱式轉換,但如果你看看文檔Type.IsAssignableFrom
它的返回值規定:
真,如果c和當前Type表示相同的類型,或者如果當前類型是在C的繼承層次結構,或者如果當前類型是一個接口是c器具,或者,如果c是一個通用的類型參數和當前Type表示C的約束之一,或如果c表示值類型和當前的類型代表
Nullable<c>
。如果這些條件都不成立,或者c爲空,則返回false。
這些條件都不是真的,所以它返回false
。
也見[如何判斷類型A是否隱式轉換爲類型B](http://stackoverflow.com/questions/2224266/how-to-告訴,如果類型是一種可以隱式轉換爲類型b) – Justin 2013-03-06 17:18:06
謝謝。該方法比名稱建議複雜得多。 – 2013-03-06 19:04:54
你所問的問題是稍有不同。在C#的設定可分配值的通常比集分配類型的CLR的更寬容。
'a'將由編譯器轉換爲int,所以不是。 – Sinatr 2013-03-06 17:16:00
'int'不能從'char'指定。有一個隱式的轉換,當你指定它的方式,這是完全不同的 – 2013-03-06 17:16:16