读书人

生手的初级有关问题(关于New关键字)

发布时间: 2012-04-11 17:42:33 作者: rapoo

生手的初级问题(关于New关键字)
SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter) DataSet thisDataSet = new DataSet() ;
以上两句各是声明各自类的一个实例
而下面这句:
DataRow thisRow = thisDataSet.Tables[ "Customers "].NewRow()
写法却不同于上面,
如果我用类似
DataRow thisRow = new DataRow() 的语句,该如何实现?
(这句话是错的,编译不通过)
再下面一句:
string abc ;

DataRow thisRow = thisDataSet.Tables[ "Customers "].NewRow()
有何区别?
我如何才能知道哪些要用new关键字声明,而哪些不用?



[解决办法]
构造方法是保护或者私有时则不允许用new创建对象。

DataRow在调用NewRow时还构造了行的结构,如有多少个字段,每个字段是什么属性,而用new则无法构成这些。
[解决办法]
DataRow thisRow = thisDataSet.Tables[ "Customers "].NewRow()
是按照这个table的结构 增加一个新行,相当于执行一个方法或者函数。而不是来new的
string abc ;

DataRow thisRow = thisDataSet.Tables[ "Customers "].NewRow()
有何区别?
第一个是生命一个变量 未分配空间。
第二个是一个table 执行了一个增加新行的方法
[解决办法]
//按照我的理解 DataRow thisRow = thisDataSet.Tables[ "Customers "].NewRow()
//就是声明了 DataRow 的一个实例 thisRow,
//然后把 thisDataSet.Tables[ "Customers "].NewRow() 生成的一个新行赋给 thisRow这个实例

应该说声明了一个变量,然后把此变量的引用指向NewRow方法生成的一个新行(这才是实例)
[解决办法]
举个不太恰当的例子,你new一个女人容易,
Women w = new Women();
但你要new一个女人肚子里的baby很复杂:
除了一些少儿不宜的过程,还要建立起women与baby的复杂关系,
Baby b = new Baby(Women, Father, Sex, MakeLoveTime....)
b.生存环境 = w.子宫
b.脐带 = w.血管
.....
还不如把这个过程作为女人的一项功能:
Baby b = w.NewBaby();
:)

读书人网 >C#

热点推荐