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