我认为我的代码是一个奇怪的问题。我有一个执行简单查询并返回结果的方法。我试图将值作为双精度返回但是我收到错误:
CS0266无法隐式转换类型' double' to' int'。一个明确的 存在转换(你错过了演员吗?)
我没有尝试进行任何转换,所以我不明白问题所在。 这是调用代码:
double displacement = sqLite.GetDisplacement( transItem.Item.Name );
以下是名为的代码:
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
}
我没有尝试转换任何内容,所有内容都被声明为double。我曾多次尝试清理和重建解决方案,但无济于事。我错过了什么?
答案 0 :(得分:1)
方法声明声明将返回int
值:
public int GetDisplacement (string item)
但是在代码中,return语句返回一个double
类型的变量:
double dDisposition = 0;
// Your code here
return dDisposition;
您必须更改其中一个,因此基本上更改返回类型:
public double GetDisplacement (string item)
或dDisposition
变量的类型以及converter method:
int dDisposition = 0;
// Your code here
dDisposition = Convert.ToInt32(result);
// More of your code here
return dDisposition;