我最近开始进行 .NET 编程,同时研究了 VB.NET 和 C#。 在 VB.NET 中,强类型数据表由强类型行的集合组成。因此,例如,以下语句将起作用:
lCustomerTable As CustomerDataSet.CustomerTable
lCustomerRow as CustomerDataSet.CustomerTable.CustomerRow
lCustomerTable = TableAdapter.GetData
lCustomerRow = lCustomerTable.Rows(0)
但是在 C# 中,我似乎必须将返回的行显式转换为 CustomerRow:
lCustomerRow = (CustomerDataSet.CustomerTable.CustomerRow)lCustomerTable.Rows[0]
这有什么原因吗?在创建表适配器和 SQL 数据表时,数据集是否应该创建对象类型定义?
请您参考如下方法:
我不认为 Rows 实际上是强类型的,即使对于类型化的数据集也是如此。不同之处在于,默认情况下,VB 允许隐式向下转型。例如。你可以这样写:
Dim o As Object = ""
Dim s As String
s = o ' implicit downcast from Object to String!
这仅在您使用 Option Strict 时被禁用 - 在 VB 中尝试并查看您的代码是否仍然可以编译...
在 C# 中,向下转换必须始终是显式的 - 它没有“非严格模式”。
