DataSet ds = new DataSet()与DataSet ds =Null有什么区别?

单线程加锁 2008-12-15 03:38:24
如题
...全文
684 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
单线程加锁 2008-12-15
  • 打赏
  • 举报
回复
谢谢各位了.
dq512000 2008-12-15
  • 打赏
  • 举报
回复
楼上幽默。。。。
new 相当于多分配了空间。。。
不是赋值。。。
soldierluo 2008-12-15
  • 打赏
  • 举报
回复
DataSet ds = new DataSet(); //这只鸟讨饭,有一只碗,不过碗里面是空的

DataSet ds =Null; //这只鸟讨饭,连只碗都没有,只有一双手。。。
chocolateboy 2008-12-15
  • 打赏
  • 举报
回复
1楼说了我想说的.
在循环中使用 ds = new DataSet(); 比 DataSet ds = new DataSet(); 节省空间?
justindreams 2008-12-15
  • 打赏
  • 举报
回复
new 不是复制,new是分配空间而已。
justindreams 2008-12-15
  • 打赏
  • 举报
回复
new关键字是在内存中分配了地址
如果是null,则只是定义了变量,没有分配具体空间
单线程加锁 2008-12-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 heyu1000 的回复:]
DataSet ds = new DataSet();
是在堆栈中分配了一个ds的变量,并在堆中分配了具体的空间,ds这个变量的值其实是堆中的内存首地址。
DataSet ds =Null;
只是在堆栈中定义了一个ds的变量,但是并没有在堆中分配具体的空间,所以这个ds其实还不能用,里面没有存值。
[/Quote]
你的意思是,NEW 则已经赋值,没NEW的是没赋值的是吧?
heyu1000 2008-12-15
  • 打赏
  • 举报
回复
DataSet ds = new DataSet();
是在堆栈中分配了一个ds的变量,并在堆中分配了具体的空间,ds这个变量的值其实是堆中的内存首地址。
DataSet ds =Null;
只是在堆栈中定义了一个ds的变量,但是并没有在堆中分配具体的空间,所以这个ds其实还不能用,里面没有存值。
需要下载:Silverlight.DataSet和Silverlight.DataSetConnector 下面是示例: DataTable Dt = new DataTable(); DataColumn col1 = new DataColumn("CompanyName"); Dt.Columns.Add(col1); DataColumn col2 = new DataColumn("Email"); Dt.Columns.Add(col2); DataRow Row = Dt.NewRow(); Row[0] = "杭州市公司"; Row[1] = "TEL110"; Dt.Rows.Add(Row); grid1.DataContext = Dt.GetBindableData(new Connector()); Silverlight与Wcf传递DataTable(以下均指我们下载这个程序集中的DataTable) 由于Silverlight这个程序集中使用的System.dll是C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.dll(2.0.5.0版本)而不是.net framework中的那个System.dll(2.0.0.0.0版本),所以在Wcf中不能直接使用DataTable,那么如何将DataTable信息从Wcf传递到Silverlight中呢,就是Wcf将DataSet转成string或byte[]传递到Silverlight然后再将其还原成DataSet,看下面的代码示列: Wcf端: public string GetRecordset(string QuerySql) { DataTable Dt = DbAgent.GetRecordset(QuerySql); DataSet ds = new DataSet(); ds.Tables.Add(Dt); return Silverlight.DataSetConnector.Connector.ToXml(ds); } Silverlight端: void client_GetRecordsetCompleted(object sender, SilverlightApplication1.DbServer.GetRecordsetCompletedEventArgs e) { if (e.Error != null) { MessageBox.Show(e.Error.Message + e.Error.StackTrace); } else { DataSet ds = new DataSet(); ds.FromXml(e.Result); DataContext = ds.Tables[0].GetBindableData(new Connector()); } } 此DataTable中存入的数据不是object类型的,而全是string类型的,如果数据库中存的值为null,那么取出来的值是null而不是DbNull.Value.

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧