2016-05-23 11 views
-2

Ich habe, was mir scheint, ein seltsames Problem mit meinem Code. Ich habe eine Methode, die eine einfache Abfrage durchführt und das Ergebnis zurückgibt. Ich versuche, den Wert als Doppel zurückzukehren, aber ich erhalte eine Fehlermeldung:Fehler 'Kann Double nicht in Int' konvertieren

CS0266 Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)

Ich bin keine Konvertierungen zu tun versuchen, so verstehe ich nicht, was das Problem ist. Hier ist die Telefonvorwahl:

double displacement = sqLite.GetDisplacement(transItem.Item.Name); 

und hier ist der Code, der aufgerufen wird:

public int GetDisplacement(string item) 
{ 
    double dDisposition = 0; 
    string sSql = "SELECT [Displacement] FROM [Items] WHERE [Name] = '" + item + "';"; 

    using (var dbConnection = new SQLiteConnection(sConnectionString)) 
    { 
     try 
     { 
      dbConnection.Open(); 
      SQLiteCommand cmd = new SQLiteCommand(sSql, dbConnection); 
      object result = cmd.ExecuteScalar(); 

      dDisposition = Convert.ToDouble(result); 

     } 
     catch (Exception e) 
     { 
      MessageBox.Show("Error retreiving displacement information: " + e.ToString()); 
     } 

    } 

    return dDisposition; // This is where I get the error 

} 

Ich versuche nicht, etwas zu konvertieren, wird alles als Doppel erklärt. Ich habe versucht, die Lösung mehrmals zu reinigen und neu aufzubauen, ohne Erfolg. Was vermisse ich?

+9

'public int ...' –

+0

Ihre Funktion wird als Rückkehr 'int' so erklärt,' dDisposition zurückkehren; 'versucht, eine Doppel zu konvertieren int – Plutonix

+1

Ein Ratschlag, wenn Sie in Zukunft darauf stoßen. Lesen Sie Ihren Code ** laut ** und Sie werden das Problem sehr schnell entdecken. –

Antwort

1

Die Methode Erklärung besagt, dass ein int Wert wird zurückgegeben:

public int GetDisplacement (string item) 

Aber auf dem Code, der return-Anweisung wird eine Variable vom Typ Rückkehr double:

double dDisposition = 0; 

// Your code here 

return dDisposition; 

Sie müssen sich ändern der eine oder andere, also grundsätzlich den Rückgabetyp ändern:

public double GetDisplacement (string item) 

oder die Art der dDisposition Variablen und der converter method:

int dDisposition = 0; 

// Your code here 
dDisposition = Convert.ToInt32(result); 
// More of your code here 

return dDisposition; 
+1

Eine Besetzung zu int wäre mehr idiomatisch. –

+0

Dank @Nahuel Ianni. Ich wusste, dass ich etwas vermisste. – mack

Verwandte Themen