System.Data.DataRow.DataRow(System.Data.DataRowBuilder 因为它受保护级别限制 如何解决,解决办法

来源:互联网 发布:适合苹果电脑设计软件 编辑:程序博客网 时间:2024/05/17 22:43

错误 1 “System.Data.DataRow.DataRow(System.Data.DataRowBuilder)”不可访问,因为它受保护级别限制

原因:DataRow dr= new DataRow();    // 错误,DataRow 不能直接new

解决办法:

DataRow dr ;或者,使用DataTable dt = new DataTable(); //对应的行,使用dt[],例如第一行  dt[0]


http://blog.163.com/zhaoyanping_1125/blog/static/20132915320123121128356/

C# DataRow实例化  

2012-04-12 13:12:08|  分类: C#|举报|字号 订阅

DataRow dr = new DataRow();  这样是不能将DataRow实例化的。

要实例化一个DataRow首先要实例化一个DataTable要确定DataRow的结构如:
DataTable dt = new DataTable();
dt.Column.Add("C1");  
dt.Column.Add("C2");
...
DataRow dr = dt.NewRow(); 


 

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的操作而不是创建。


1 0