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关键字声明,而哪些不用?

解决方案 »

  1.   

    构造方法是保护或者私有时则不允许用new创建对象。DataRow在调用NewRow时还构造了行的结构,如有多少个字段,每个字段是什么属性,而用new则无法构成这些。
      

  2.   

    DataRow thisRow = thisDataSet.Tables["Customers"].NewRow()
    是按照这个table的结构 增加一个新行,相当于执行一个方法或者函数。而不是来new的
    string abc ;

    DataRow thisRow = thisDataSet.Tables["Customers"].NewRow()
    有何区别?
    第一个是生命一个变量 未分配空间。
    第二个是一个table 执行了一个增加新行的方法
      

  3.   

    NewRow是新增一行,和new是两个概念。
      

  4.   

    Anders_lt(突破渴望):
    string abc ;

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

  5.   

    按照我的理解: string abc ="abcde"
    就是生成一个 string 类的实例 abc 然后给  abc 赋一个值 "abcde" 请问样理解错在什么地方?
      

  6.   

    //按照我的理解 DataRow thisRow = thisDataSet.Tables["Customers"].NewRow()
    //就是声明了 DataRow 的一个实例 thisRow,
    //然后把 thisDataSet.Tables["Customers"].NewRow() 生成的一个新行赋给 thisRow这个实例应该说声明了一个变量,然后把此变量的引用指向NewRow方法生成的一个新行(这才是实例)
      

  7.   

    举个不太恰当的例子,你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();
    :)