当从 SqlDataReader 访问值时,这两者之间是否存在性能差异:
string key = reader.GetString("Key");
或
string key = reader["Key"].ToString();
在此代码示例中:
string key;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
key = reader.GetString("Key");
// or
key = reader["Key"].ToString();
}
}
最佳答案
我刚刚浏览了 .NET 源代码,这两种访问方法本质上是相同的。唯一的区别是第二个进行了额外的装箱。所以第一个对应于类似的东西(在基本类型的情况下):
int key = GetInternalSQLDataAsInt32("Key");
而第二个是:
int key = (int)(object)GetInternalSQLDataAsInt32("Key");
GetInternalSQLDataAsInt32(...) 函数表示将数据从 SQL 编码到 .NET 的 SQL 数据库机制。
但正如上文所指出的,基于字符串的键和基于序号的键之间可能存在更显着的差异。
关于c# - SqlDataReader 在访问值方面的性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516637/