Je ne sais pas vraiment quoi ajouter au titre, j'aimerais obtenir le type (t) d'une nullable. Par exemple, j'ai reçu un objet dont le type est nullable et je voudrais obtenir quelque chose comme "System.int32" (le type de cours, pas la chaîne) p>
6 Réponses :
Wow, je ne savais pas que cela existait, très gentil!
Obtenu l'erreur suivante: Erreur 1 'System.NULLABLABLE' ne contient pas de définition pour 'GetUnderYlingType'
Mon test montre que Nullable.getUnderlyLingType (Nouvelle Nullable
Vous référencez-vous à l'aide du système? ?
Oui, System.Nullable.getyLlingType (...). Quoi qu'il en soit, l'autre réponse a fonctionné comme un charme :)
Oui. NULLLABLE.GETUDERLYDYPE a été ajouté avec .NET 2.0. Je vous recommande d'utiliser cette méthode pour obtenir votre sous-jacent_type. Son nettoyeur
Une nullable est une construction générique, vous devez donc l'obtenir des généricarguments du type, comme celui-ci: typeof (t) .gegenericarguments () [0] p> p> p> P>
System.Nullable.GetUnderlyingType(typeof(Nullable<int>));
Cela lancera NullReferenceException si Myint est actuellement null.
Avertissement: code horrible, pas de chèques, juste un exemple, etc:
Cette méthode devrait faire l'affaire:
Utiliser gettype () Il fonctionne comme (ONU) attendu.
if (typeof(int?) == typeof(int)) MessageBox.Show("It works with definitions"); if (new Nullable<int>(2).GetType() == typeof(int)) MessageBox.Show("It works with instances!");
Je crois que c'est une dupe mais que vous ne pouvez pas le trouver, mais vous recherchez NULLLABLE.GETUDERLYINGTYPE . Pourrait être Stackoverflow.com/Questions/5174423/... ou Stackoverflow.com/questions/5181494/...
blog.dotnetclr. com / archive / 2008/03 / 11 / ...
La question est ambiguë. Avez-vous un objet de type représentant un type de valeur nullable et vous souhaitez connaître le type de valeur sous-jacente? Ou avez-vous une instance i> d'un objet de type valeur nullable et que vous souhaitez connaître le type de valeur sous-jacente? Les réponses à ces deux questions sont complètement différentes. Dans le premier cas, vous pouvez utiliser BeUnderlyingType. Dans le second cas, l'instance d'objet est en boîte ou non. S'il est en boîte, alors il n'est pas de type nullable i>. Il n'y a pas de type de valeur nullable en boîte. Si ce n'est pas en boîte, alors vous connaissez déjà son type i>.
J'ai eu un type représentant l'objet. Pour une instance, je devrais utiliser Activator.createInstance qui pourrait être possible, mais un peu inutile imo, car je peux obtenir ce que je veux du type!