Pragnę zauważyć, żeCzy można przenosić z char?
int number = 'a';
jest dźwięk C wypowiedź #
Ale to wyrażenie
typeof(int).IsAssignableFrom(typeof(char))
zwraca false. Czy to nie jest sprzeczność?
Pragnę zauważyć, żeCzy można przenosić z char?
int number = 'a';
jest dźwięk C wypowiedź #
Ale to wyrażenie
typeof(int).IsAssignableFrom(typeof(char))
zwraca false. Czy to nie jest sprzeczność?
Czy nie jest to sprzeczność?
Nie. C# zapewnia niejawna konwersja z char
do int
, ale jeśli spojrzeć na dokumentacji Type.IsAssignableFrom
stwierdza na wartości zwracanej:
prawdziwe, jeśli c oraz aktualny typ reprezentują ten sam typ, lub jeśli obecny typ jest w hierarchii dziedziczenia c lub jeśli bieżący typ jest interfejsem, który c implementuje, lub jeśli c jest parametrem generycznym, a bieżący typ reprezentuje jedno z ograniczeń c, lub c reprezentuje typ wartości i bieżący typ reprezentuje
Nullable<c>
. false, jeśli żaden z tych warunków nie jest prawdziwy, lub jeśli c ma wartość null.
Żaden z tych warunków nie jest prawdziwy, więc zwraca false
.
Zobacz także [Jak określić, czy typ A jest niejawnie konwertowalny na typ B] (http://stackoverflow.com/questions/2224266/how-to- tell-if-type-a-is-implicitly-convertible-to-type-b) – Justin
Dzięki. Metoda jest znacznie bardziej skomplikowana niż sugerowana nazwa. –
Pytania, które zadasz, są nieco inne. Zestaw przypisywalnych wartości w C# jest na ogół bardziej permisywny niż zbiór możliwych do przypisania typów w CLR.
"a" zostanie przekonwertowane przez kompilator na int, więc nie jest. – Sinatr
'int' nie można przypisać z' char'. Istnieje niejawna konwersja po przypisaniu jej w ten sposób, która jest zupełnie inna –