0

次のエラーが付属していternary operatorます。

エラー: '' と 'int' の間に暗黙的な変換がないため、条件式の型を特定できません

結果を指定(int)(result)したにもかかわらず、このエラーが表示されるのはなぜですか? ExecuteScalarどうすれば修正できますか?

コード

    public int? GetWINFromAssociateID(int associateID)
    {
        int? WIN =null;
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            string commandText = DataLayerConstants.GetWINFromAssociateIDCommand;
            using (SqlCommand command = new SqlCommand(commandText, connection))
            {
                command.CommandType = System.Data.CommandType.Text;
                command.Parameters.AddWithValue("@payroll_svc_assoc_id", associateID);

                var result = command.ExecuteScalar();
                WIN = result == DBNull.Value ? null : (int)(result);
            }
        }
        return WIN;
    }

更新された参考文献

  1. 条件演算子は暗黙的にキャストできませんか?
  2. 型推論の問題、パート 1 - Eric Lippert 著
4

2 に答える 2

3

三項演算子の null を int? にキャストする必要があります。

Win=result==DBNull.Value?(int?)null:(int?)result;
于 2013-02-09T06:51:06.233 に答える
0

これは、型Command.ExecuteScalarのインスタンスが返されるためです。object整数を返さない可能性があります。

int.Parseint.TryParse; またはそれ以上を使用する必要があります。

int.Parse(result.ToString());

また

int temp = -1;
int.TryParse(result.ToString(), out temp);
于 2013-02-09T07:42:51.833 に答える