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

7 篇文章 0 订阅

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值