gpt4 book ai didi

.net - DataReader[i] vs DataReader.GetValue(i) vs DataReader.GetString(i)

转载 作者:行者123 更新时间:2023-12-04 01:55:04 24 4
gpt4 key购买 nike


dataReader[i]

逻辑上等价于
dataReader.GetValue(i)

他们是一样的吗?它们不同吗?是否存在一种情况比另一种更合适的情况?

documented differently :

  • Gets the column located at the specified index
  • Return the value of the specified field.


但是当我使用它们时,它们都返回该字段的值。 “获取列”是什么意思? “返回字段的值”是什么意思?

奖金聊天 :

当我打电话时:
reader[i];
reader.GetValue(i);
reader.GetString(i);

我得到一个 String每一次

最佳答案

最终取决于 System.Data.IDataReader 的特定实现您指的是,但我们假设您的意思是 System.Data.SqlClient.SqlDataReader .

在这种情况下,reader[i]reader.GetValue(i)做完全一样的事情。事实上,reader[i]内部电话reader.GetValue(i) . (您可以通过使用像 ILSpy 之类的工具反汇编代码来看到这一点。)。这两个成员都返回当前行第 i 列中的值,并且无论值的类型如何(返回类型为 object )都会成功返回。这两个成员的文档有点误导,可以用更好的方式措辞。你可以在任何你喜欢的地方使用这些成员中的任何一个,只要选择你觉得更好读的那个。

reader.GetString(i)专门用于返回包含在当前行的第 i 列中的值作为 string .如果该列中的值不是 string , 一个 InvalidCastException将被抛出。当您确定该值是 string 时,请使用此方法。和 string是您要使用的类型。这将使您的代码更加简洁,因为您不必执行强制转换。

在您的特定情况下,当前行的第 i 列中的值必须是类型 string ,这就是为什么所有三个成员的返回值都是相同的。

如果写得正确,System.Data.IDataReader 的其他实现应该以同样的方式行事。

关于.net - DataReader[i] vs DataReader.GetValue(i) vs DataReader.GetString(i),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8437270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com