专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > ASP.NET

两个小疑点

发布时间:2011-06-22 17:14:05 文章来源:www.iduyao.cn 采编人员:星星草
两个小问题
1.DataTable 使用的时候,new 一个和直接赋值有什么区别?
2.类里面的数据成员是对象的时候,是直接初始化还是从构造函数中初始化?
  class A{
  } 
 (一): Class B{
  A a = new A();
  public B(){
  }
  } 
  (二): Class B{
  A a;
  public B(){
  a = new A();
  }
  } 


------解决方案--------------------
1.不了解

2.两者没有本质区别,不过建议用2,如果还有一个public B(string name){},而这里并不用到A,那么就没必要初始化A。
------解决方案--------------------
对象在方法里面的实例化 和在方法外边的实力化
 
用法各有千秋,
如果你想全局使用 那就在外边实例化(1),如果只是限于方法里面的,那就用(2)
------解决方案--------------------
1 DataTable dt = new DataTable() 与 DataTable dt;

个人认为:前者dt经过方法new之后,会首先执行DataTable的构造函数,而此时dt 已经有了一个DataTable的所有信息,如Rows.Count,而这些心都都是初始化的值,比如0
后者dt只是简单定义了,而没有初始化,而此时dt = null ,对应的,它没有 Rows等一系列属性


比较:前者dt已经声明,并且它已经在内存中占据一定的位置
后者dt为null,内存并没有分配空间
------解决方案--------------------
探讨
1 DataTable dt = new DataTable() 与 DataTable dt;

个人认为:前者dt经过方法new之后,会首先执行DataTable的构造函数,而此时dt 已经有了一个DataTable的所有信息,如Rows.Count,而这些心都都是初始化的值,比如0
后者dt只是简单定义了,而没有初始化,而此时dt = null ,对应的,它没有 Rows等一系列属……

------解决方案--------------------
DataTable dt1 = new DataTable()
初始化之后的dt
不仅仅只是运行了构造函数这么简单。
系统要给dt分配一段内存,内存中的内容要包括整个DataTable里的所有定义,该段内存中的数据能够支持dt对象的一系列的方法和属性。
比如dt.TableName属性,这个数据也是在这段内存中定义的。

DataTable dt2;
这个没有初始化,仅仅是在内存堆栈中声明了一个对象,只是有个站位罢了,没有将这个对象指向一个实际的内存空间
如果运行了 dt2 = dt1;
那么,dt2在堆栈中的那个对应将对应到dt1的那整段内存空间。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: