Dupliquer possible:
Qu’est-ce que System.Void?
Je n’ai aucune raison pratique de connaître cette réponse, mais je suis quand même curieux …
En C #, essayer d’utiliser System.Void
produira une erreur de compilation:
erreur CS0673: Impossible d’utiliser System.Void à partir de C # – utilisez typeof (void) pour obtenir l’object de type void
- Moyen le plus rapide d’implémenter la suppression des caractères en double dans la chaîne (C #)
- Onglet vertical avec texte horizontal dans Winforms
- Analyser la chaîne dans une requête LINQ
- Méthode de service Web avec parameters facultatifs
- Boucles de redirection intermittentes lors de l’authentification ADFS
Si j’ai bien compris, void
est simplement un alias de System.Void
. Donc, je ne comprends pas pourquoi “System.Void” ne peut pas être utilisé directement comme vous le feriez avec “ssortingng” pour “System.Ssortingng” par exemple. J’aimerais lire une explication pour cela!
Incidemment, System.Void
peut être utilisé avec succès avec le compilateur Mono, au lieu de celui de Microsoft, et cela semble équivalent à l’utilisation du mot clé void
. Il doit donc s’agir d’une ressortingction imposée par le compilateur plutôt que d’une ressortingction CLR, n’est-ce pas?
Je crois que le seul but de cette structure est de l’utiliser en reflection, alors que les autres types (comme System.Ssortingng, System.Int32, etc.) sont des types appropriés contenant des données. Void ne contient aucune donnée et vous ne pouvez pas instancier cette structure à partir de votre code.
À mon avis, l’erreur du compilateur est d’assurer la cohérence du code. Il serait étrange d’avoir des méthodes comme celle-ci:
System.Void MyMethod() { ... }
À première vue, il semble que quelque chose soit retourné, alors qu’en réalité ce n’est pas le cas. À mon avis, c’est une bonne décision de la part de l’équipe C # (si mes spéculations à ce sujet sont correctes)
Peut-être parce que si System.Void était autorisé comme référence de type, il pourrait commencer à apparaître dans
Utiliser typeof(void)
rend cela illégal syntaxiquement. Cela suit le principe de la moindre surprise
Edit En outre, comme le souligne Eric Lippert, c’est parce que, par exemple, Void n’est une super-classe de rien (le void est en fait invariant ). Vous trouverez toutes les informations à ce sujet ici http://blogs.msdn.com/b/ericlippert/archive/2009/06/29/the-void-is-invariant.aspx