2

エラーが発生する次のコードがありますcannot apply indexing with [] to an expression of type object

protected void btnMakeCards_Click(object sender, EventArgs e)
{
    string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString;
    using (var con = new SqlConnection(cs))
    using (var cmd = new SqlCommand("spDrugCardGenerator", con))
    {
        con.Open();
        cmd.CommandType = CommandType.StoredProcedure;
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);

        foreach (var row in dt.Rows)
        {
            foreach (var col in dt.Columns)
            {
                Response.Write(row[col].ToString());
            }
        }
    }
}

DataRowとの具象型を使用すると、このコードが正常にコンパイルされるのはなぜDataColumnですか? コンパイラは、using ステートメントでデータ型がどうあるべきかを推測できます。データ テーブルの処理はどうなっていますか?

4

3 に答える 3