首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

一个关于新建类的有关问题

2013-08-24 
一个关于新建类的问题小弟是新手,想请问各位大神下面两段代码为什么是等效的DataSet ds new DataSet()D

一个关于新建类的问题
小弟是新手,想请问各位大神下面两段代码为什么是等效的

DataSet ds = new DataSet();
            DataTable dt = new DataTable("Person");
            ds.Tables.Add(dtPerson);


   DataSet ds = new DataSet();
            DataTable dt = ds.Tables.Add("Person");


为什么在新建DataTable对象的时候,可以不用new一个新的对象出来? 类 对象
[解决办法]
为什么是等效的? Add()方法重载,根据各自API描述,其行为各异,但结果相同。比如,一个吃水里,一个吃果汁。结果拉出来的,都是屎。

DataTable dt = ds.Tables.Add("Person"); 为什么在新建DataTable对象的时候,可以不用new一个新的对象出来? 很明显,在Add(string dtName) 方法里,它已经帮你new了一个新对象,如果你去看.net源码(),就会看到有new一个新对象的代码。不要告诉我,你不知道怎样去.net framework源码。 
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

为什么是等效的? Add()方法重载,根据各自API描述,其行为各异,但结果相同。比如,一个吃水里,一个吃果汁。结果拉出来的,都是屎。

DataTable dt = ds.Tables.Add("Person"); 为什么在新建DataTable对象的时候,可以不用new一个新的对象出来? 很明显,在Add(string dtName) 方法里,它已经帮你new了一个新对象,如果你去看.net源码(),就会看到有new一个新对象的代码。不要告诉我,你不知道怎样去.net framework源码。 


 但是你怎么解释这个呢 ?    DataRow dr = ds.Tables[0].Rows[0];   难道这个也有重写new 对象?


很明显,这不是新建什么对象,这是获取一个已经存在的对象。根据API你可以知道一切。
[解决办法]
Tables.Add()实际上是先new了再Add
[解决办法]
重载的方法而且,.Net dll内部也是先new了然后再add,最后返回引用给你的
你可以用reflector查看源码

热点排行