httpserverutilité contient une fonction publique appelée UrlenCode. Ce n'est pas une fonction partagée. Httpserverutilité n'a pas de constructeurs publics.
faire cela échoue: p> Ceci fonctionne, et c'est comment Microsoft dit de le faire: P> Dim instance As HttpServerUtility
Dim encodeMe As String = "a string to be encoded!"
instance.UrlEncode(encodeMe ) 'Works!
4 Réponses :
Il possède un constructeur privé statique qui lui permet d'être utilisé. Consultez le lien suivant: constructeurs statiques P>
Si vous voulez voir ce qu'ils ont téléchargé réflecteur et ouvrez-le. P>
Edit: Pour rincer la réponse pour rendre les gens heureux. Pendant que le constructeur statique qui est privé permet au code d'être écrit comme si vous avez toujours besoin d'une instance pour fonctionner correctement. p>
Oui, mais le point est que vous n'avez pas besoin de créer l'instance pour le faire fonctionner, même s'il s'agit d'un membre d'instance, pas un partagé.
Pour l'amour de Donald Knuth no. Cette réponse est fausse et ne devrait pas avoir de upvotes. Ce n'est pas parce qu'il existe un constructeur statique ne vous permet pas d'appeler des méthodes sur des instances non attribuées et de ne pas courir dans une exception d'exécution. Le niveau de confusion dans ce fil est étonnant.
Ce que Jason a dit. Vous pouvez appeler cette méthode sur une référence null. Cela meurt normalement avec une nullreferenceException.
+1 à Jason ... @joshua - Déclaration d'une variable ne crée absolument pas une instance du type
@Joshua - Votre édition est également incorrecte. Le constructeur statique n'autorise pas le code à écrire comme dans la question. Les deux versions du code dans la question ne fonctionnent pas
Êtes-vous sûr que cela fonctionne?
Dim s As String = "Hello, World!" Dim result As String = HttpUtility.UrlEncode(s)
@Divo: Alors c'est faux sur MSDN (pas la première fois). Il se bloque au moment de l'exécution.
Htt-députilité.urlencode (Encodeme) économisera beaucoup de temps et de douleur sur ce débat
@Jason: J'ai regardé dans la description de la méthode de MSDN et je n'ai rien trouvé de problème - bien que le doc est i> mauvais.
@Jason je crois que vous avez raison - le doc est mauvais et devrait lire l'instance httpServerutilité = httpcontext.server;
Je viens de regarder la documentation. Je pense que la confusion découle de l'extrait étiqueté "Visual Basic (Usage)" ( MSDN .microsoft.com / fr-US / US / Bibliothèque / ZTTXTE6W.ASPX ). C'est ainsi que toute la documentation pour vb.net est écrite dans MSDN. Il vous indique que si vous avez une variable nommée instance code> de type httpserverutilité code> et une variable nommée s code> de type chaîne, alors vous pouvez invoquer la méthode < code> httpserverutilité.urlencode code> via instance.urlencode (s) code>. Pour un autre exemple de ce type de documentation, consultez streamreader.read code> ( msdn.microsoft.com/en-us/library/ath1fht8.aspx ).
Utilisez httTputetilité.urlencode () strong> au lieu de
Tout d'abord, aucun des exemples de code que vous avez donnés ne fonctionnera. P>
Le premier exemple ne fonctionnera pas car l'urlencode est une méthode d'instance, vous ne pouvez donc pas l'appeler sur le type, c'est-à-dire httpserverutilité.urlencode (Encodeme). P>
Le deuxième exemple ne fonctionnera pas car la variable n'a pas été attribuée. P>
Cela n'a rien à voir avec des constructeurs statiques et les réponses affichées indiquées en tant que telles sont trompeuses. P>
Le type httpServerutilité est conçu pour être initialisé uniquement en interne par l'assemblage System.Web. Vous ne pouvez pas créer vos propres instances de celui-ci. Vous pouvez y accéder à une instance dans une application Web à l'aide de httpcontext.server (qui renvoie une instance d'une httpServerutilité). P>
Bombes avec quoi? "La référence d'objet n'est pas définie à une instance d'un objet"?
OOP 101: Méthodes statiques / classe! = Méthodes d'instance
Où avez-vous trouvé ce deuxième code de votre part, où dit Microsoft qu'il fonctionne - et: avez-vous réellement testé? Il fait pas b> travail.
Bien que la documentation puisse être déroutante, je ne suis pas sûr que je dirais que c'est faux. La case "Visual Basic (Usage)" est destinée à vous donner une idée de la façon de déclarer une variable du type droit et de comment appeler un Méthode sur IT.Il ne montre pas comment obtenir une instance.Ce information est répliquée dans toute la documentation msdn.microsoft.com/en-us/library/... , par exemple.Le code qui doit être utilisé pour le test est celui dans les cases de code exemple. Ils ont même mis un lien "Code de copie" sur ces cases pour éviter de sélectionner le code dans l'échantillon.
Vous n'allez pas nous relier à la documentation défectueuse de MSDN? C'est un peu grossier.