当前位置:编程学习 > C#/ASP.NET >>

为什么DataRow不能直接通过NEW实例化

为什么DataRow不能直接通过NEW实例化 --------------------编程问答-------------------- 顶................... --------------------编程问答-------------------- 实例化DataRow时 需要一个架构,也就是对列的描述 --------------------编程问答-------------------- DateRow 必须有个table的引用
--------------------编程问答-------------------- 且构造函数是
protected internal
--------------------编程问答-------------------- 根SQLdataReder一样不可以new --------------------编程问答-------------------- 访问修饰设为了不可实例化 --------------------编程问答-------------------- DataRow dr=new DataRow();可以啊
你引入名命空间没有啊 --------------------编程问答-------------------- DataRow   dr=new   DataRow();
这样是不能将DataRow实例化的,要实例化一个DataRow首先要实例化一个DataTable要确定DataRow的结构如:
DataTable dt = new DataTable();
dt.Column.Add("C1"); 
dt.Column.Add("C2");
...
DataRow dr = dt.NewRow();  --------------------编程问答-------------------- 8楼的是正确的。。 --------------------编程问答-------------------- 我想应该是datarow不能作为一个对象单独存在,必须是属于某个datatable的`` --------------------编程问答-------------------- 同意 8 楼的说法,还有就是是否引用了 system.data命名空间。 --------------------编程问答-------------------- 学习~ --------------------编程问答-------------------- up
--------------------编程问答-------------------- 这个问题只要到你的msdn上看一下其构造函数的说明就可以了
DataRow的构造函数:
protected internal DataRow (
DataRowBuilder builder
)

你看见了,他是一个受保护的internal类
internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的

ms这么做是有他的隐含意思在里面的:

一个table和他对应的row应该是有相同结构的,为了保证他们结构相同,就必须按照一个统一标准来规范他们.要么用table来规范row,那么让row去格式化table,ms选择了前一种方式,这里他们又隐含一层意思,那就是生成的顺序,table比row先生成.

所以为了严格保证这种规范和生成顺序,该构造函数就限制成了protected internal ,ok了,这么做,你就是想把table和row结构不对应都不成了,因为他没有留给你任何犯错的机会


--------------------编程问答-------------------- 补充一下:
从上面的构造函数可以看出,实际上row结构的创建是DataRowBuilder类负责的,而不是datarow类,datarow类实际负责对row的操作而不是创建 --------------------编程问答-------------------- 14楼 说的完全正确  太棒了  高手 --------------------编程问答-------------------- http://msdn.microsoft.com/zh-cn/chats/system.data.datarow.aspx
DataRow 和 DataColumn 对象是 DataTable 的主要组件。使用 DataRow 对象及其属性和方法检索、评估、插入、删除和更新 DataTable 中的值。DataRowCollection 表示 DataTable 中的实际 DataRow 对象,DataColumnCollection 中包含用于描述 DataTable 的架构的 DataColumn 对象。使用重载的 Item 属性返回或设置 DataColumn 的值。

使用 HasVersion 和 IsNull 属性确定特定行值的状态,使用 RowState 属性确定行相对于它的父级 DataTable 的状态。

若要创建新的 DataRow,请使用 DataTable 对象的 NewRow 方法。创建新的 DataRow 之后,请使用 Add 方法将新的 DataRow 添加到 DataRowCollection 中。最后,调用 DataTable 对象的 AcceptChanges 方法以确认是否已添加。有关将数据添加到 DataTable 中的更多信息,请参见向数据表中添加数据。

您可通过调用 DataRowCollection 的 Remove 方法或调用 DataRow 对象的 Delete 方法,从 DataRowCollection 中删除 DataRow。Remove 方法将行从集合中移除。与此相反,Delete 标记要移除的 DataRow。在调用 AcceptChanges 方法时发生实际移除。通过调用 Delete,您可在实际删除行之前以编程方式检查哪些行被标记为移除。有关更多信息,请参见 DataRow 删除。

补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,