Impossible de convertir de la méthode de groupe "Lire" non-délégué de type 'bool'
Je suis en train d'utiliser SqlDataReader
pour vérifier si une entrée existe. Si elle existe, elle sera de retour l'ID, sinon elle retourne false. Lorsque j'essaie de compiler, j'obtiens le message d'erreur "Impossible de convertir de la méthode de groupe "Lire" non-délégué de type 'bool'. J'ai été à la suite d'un exemple que j'ai trouvé dans VB, mais il semble que la traduction peut ne pas être correcte.
private string checkProfileExists()
{
string strReturn = "False";
string strSql = ("SELECT ID FROM tblInformation WHERE txtUsername=@UserName " +
"AND TrackingID=@TrackingID");
string strConn = ConfigurationManager.ConnectionStrings["WEM_PassWord_Reset"].
ConnectionString;
SqlConnection objConn = new SqlConnection(strConn);
SqlCommand objCmd = new SqlCommand(strSql, objConn);
objCmd.Parameters.AddWithValue("@Username", txtUsername.Text);
objCmd.Parameters.AddWithValue("@TrackingID", txtTrackingID.Text);
try
{
objConn.Open();
System.Data.SqlClient.SqlDataReader rdr = objCmd.ExecuteReader();
if (rdr.Read)
{
strReturn = rdr("ID").ToString;
}
else
{
strReturn = "False";
}
}
catch (Exception ex)
{
lblErrorMessage.Text = ex.ToString();
}
finally
{
objConn.Close();
objCmd = null;
}
return strReturn;
}
Les gars, vous fermez les questions trop vagues ou trop ouvert mais aussi pour avoir été trop localisées? Pourquoi ce serait un problème? À la recherche à résoudre ce problème s'est posé à moi sur cette question et il m'a aidé.
OriginalL'auteur Jason | 2011-02-03
Vous devez vous connecter pour publier un commentaire.
Quand vous voyez l'expression "méthode" groupe " en C# erreur, une explication à considérer est que vous avez omis les parenthèses
()
à partir d'une méthode qui ne prend pas d'arguments. Dans ce cas, la méthode estRead
sur votreDataReader
.Lorsque le compilateur voit
Read
(sans les parenthèses), il pense que vous parlez de la méthode elle-même, comme s'il essayait de l'attribuer à un délégué, dire. Alors que ce que vous voulez vraiment faire est invoquer de la méthode pour ce faire, en C#, vous devez donner la liste des arguments (qui dans ce cas est vide), donc:Read()
.OriginalL'auteur AakashM
en C#, les invocations de méthode toujours besoin de les parenthèses, même quand ils ne prennent pas de paramètres
merci pour l'aide, maintenant que je le vois, il prend tout son sens
Oui, mais il a clairement déclaré que cet extrait de code est une traduction à partir de VB. Je pensais que ce serait une bonne idée de développer un peu sur l'explication, pas seulement de pointer le doigt sur l'erreur, cause le compilateur déjà fait
OriginalL'auteur mquander
L' () pour l'invocation de méthode sans paramètre de méthodes ne sont pas facultatifs en C#. Sans les parenthèses de l'expression qui identifie la méthode(groupe), et non de sa valeur de résultat. Ce comportement rend la grammaire beaucoup moins ambigu, en particulier pour les méthodes qui retournent des délégués.
La première réaction d'un programmeur C# quand il voit "Impossible de convertir de la méthode de groupe" ... " pour les non-délégué de type '...'" est généralement "Oh, j'ai oublié mon () pour l'invocation".
OriginalL'auteur CodesInChaos
Voir votre source je recommande fortement d'utiliser l'instruction à l'aide de deux de l'occurrence de SqlConnection ET le SqlDataReader.
Si vous ne Fermez PAS le lecteur, le garbagecollection moment de décider lorsque le lecteur se finalise. Vous pouvez apporter SqlServer vers le BAS lorsque vous ne savez pas que.
OriginalL'auteur Edmond De Savornin Lohman