J'essaie d'utiliser sqldatreader code> pour vérifier si une entrée existe. S'il existe, il retournera l'identifiant, sinon cela reviendra de faux. Lorsque j'essaie de compiler, je reçois l'erreur "Impossible de convertir le groupe de méthodes" Lire "au type" Bool "non délégué. J'ai suivi un exemple que j'ai trouvé dans VB, mais il semble que la traduction peut ne pas être correcte.
4 Réponses :
if (rdr.Read()) { strReturn = rdr["ID"].ToString(); }
Lire est une méthode dans la classe SQLDatreader, qui, dans ce cas, ne prend pas de paramètres
@Jhonny en C #, les invocations de méthodes nécessitent toujours parenthèses i>, même quand ils ne prennent aucun paramètres i>
Merci pour l'aide, maintenant que je le vois, cela a un sens complet
Oui, mais il a clairement indiqué que cet extrait de code était une traduction de VB. Je pensais que ce serait une bonne idée de se développer un peu sur l'explication, pas seulement sur le doigt sur l'erreur, car le compilateur a déjà fait que
Lorsque vous voyez la phrase «Méthode Group» dans une erreur C #, une explication à considérer est que vous avez omis les parenthèses Lorsque le compilateur voit () code> à partir d'une méthode qui ne prend aucun argument. Dans ce cas, la méthode est
lue code> sur votre
DataReader code>. P>
lire code> (sans parenthèses), il pense que vous parlez de la méthode elle-même, comme si vous essayez de l'attribuer à un délégué, par exemple. Alors que ce que vous voulez réellement faire, c'est invoquer em> la méthode - pour le faire, dans C #, vous devez donner la liste des arguments (dans ce cas échéant), donc:
Lire () code>. p>
L'invocation de méthode () pour la méthode des méthodes sans paramétrage n'est pas facultative en C #. Sans les parenthèses, l'expression identifie la méthode (groupe) et non sa valeur de résultat. Ce comportement rend la grammaire beaucoup moins ambiguë, en particulier pour des méthodes qui renvoient des délégués. P>
La première réaction d'un programmeur C # lorsqu'il voit "Impossible de convertir le groupe de méthodes" "au type non délégué" ... "est généralement" Oh j'ai oublié mon () d'invocation ". P >
Voir votre source, je vous recommande vivement d'utiliser l'instruction Utilisation de la SQLConnection et de la SQLDatreader. P>
Si vous ne fermez pas le lecteur, le moment de la garbagécollection décidera lorsque le lecteur finalise. Vous pouvez apporter SQLServer lorsque vous ne le savez pas. P>
Vous fermez des questions pour être trop vague ou trop ouverte mais aussi pour être trop localisée? Pourquoi ce serait-il un problème? Vous cherchez à résoudre ce problème m'a atterri sur cette question et cela m'a aidé.