Skip to main content
 首页 » 编程设计

c#之在 C# 中,为什么数据表不知道行的类型集合

2024年01月29日27jirigala

我最近开始进行 .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# 中,向下转换必须始终是显式的 - 它没有“非严格模式”。