社区
C#
帖子详情
方法传参数问题...等待庖丁解牛
Sunsik1986
2009-03-15 01:06:09
问个问题...
public string AddClass( DataSet ds)
{
....
}
public string AddClass( string str)
{
....
}
这2个方法有快慢,内存大小的区别吗?我看例子DataSet 中的数据只用到ds.rows[0][0]...那么直接传1条,用string传不好些吗?为什么要传个DataSet?
貌似传DataSet 不会影响效率或者内存空间...引用类型来的...
...全文
86
12
打赏
收藏
方法传参数问题...等待庖丁解牛
问个问题... public string AddClass( DataSet ds) { .... } public string AddClass( string str) { .... } 这2个方法有快慢,内存大小的区别吗?我看例子DataSet 中的数据只用到ds.rows[0][0]...那么直接传1条,用string传不好些吗?为什么要传个DataSet? 貌似传DataSet 不会影响效率或者内存空间...引用类型来的...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vrhero
2009-03-15
打赏
举报
回复
不止是指针...都说了将在AddClass方法体内创建一个新的DataSet对象,此对象是传递的参数的副本...
Sunsik1986
2009-03-15
打赏
举报
回复
如此说传递dataset也无所谓...因为是指针...存储的是指针比传递字符串还节省了内存空间
而且dataset传递过去也方便...以便扩展...对数据加工什么的
charlenchen
2009-03-15
打赏
举报
回复
[Quote=引用 7 楼 Sunsik1986 的回复:]
还存在啊...
ds.dispose()后...
我再打印对象 仍然存在啊....
dataset本身就是引用类型...加ref和不加一样的
[/Quote]
既然还存在,那么加ref和不加ref就是不一样的
vrhero
2009-03-15
打赏
举报
回复
还有一点...这个引用的副本仅仅是DataSet对象的引用的副本,该DataSet对象的引用成员仍然是相同的引用...所以不加ref可以更改该DataSet对象的引用成员...
vrhero
2009-03-15
打赏
举报
回复
[Quote=引用 7 楼 Sunsik1986 的回复:]
还存在啊...
ds.dispose()后...
我再打印对象 仍然存在啊....
dataset本身就是引用类型...加ref和不加一样的
[/Quote]
不一样...传递的都是一个引用的副本,但是加ref将保留方法中对引用的对象的更改,不加ref退出方法体时放弃该副本...
也就是说当你传递一个DataSet对象给方法AddClass时,在AddClass方法体内将创建一个新的DataSet对象...
Sunsik1986
2009-03-15
打赏
举报
回复
还存在啊...
ds.dispose()后...
我再打印对象 仍然存在啊....
dataset本身就是引用类型...加ref和不加一样的
大头苍蝇
2009-03-15
打赏
举报
回复
[Quote=引用 3 楼 Sunsik1986 的回复:]
貌似DataSet不占用多少资源吧....DataSet在表示层就开辟了的...知识传到业务逻辑层处理过后传到数据访问层罢了
想想DataSet传递的是指针吧...又不新开辟个DataSet...不占用什么内存吧
[/Quote]
DataSet dsOut = new DataSet();
AddClass(dsOut )
public string AddClass( DataSet ds)
{
ds.dispose();
}
dsOut 还存在吗?
大头苍蝇
2009-03-15
打赏
举报
回复
public string AddClass( DataSet ds)
{
....
}
public string AddClass( string str)
{
....
}
第一个方法需要在内存控件复制一个新的 ds,ds的大则开销大
第一个方法改为
public string AddClass(ref DataSet ds)
{
....
}
不复制ds,直接使用你传给函数的参数。
(类似与C语言中的指针参数)
Sunsik1986
2009-03-15
打赏
举报
回复
而用string的话要另外开辟个空间了吧....反而不好 好像....
Sunsik1986
2009-03-15
打赏
举报
回复
貌似DataSet不占用多少资源吧....DataSet在表示层就开辟了的...知识传到业务逻辑层处理过后传到数据访问层罢了
想想DataSet传递的是指针吧...又不新开辟个DataSet...不占用什么内存吧
娃都会打酱油了
2009-03-15
打赏
举报
回复
虽然模模糊糊知道怎么回事,但不知道是不是正确答案。。。等待正确回答
我在深圳搬砖-Justin
2009-03-15
打赏
举报
回复
只有一个值的话就用string好
DataSet 比较占资源
不知道你的案例是在那里看到的
jenkins Pipline
庖丁解牛
.doc
Pipeline 还支持设置额外参
数
,比如在声明式 Pipeline 中,可以指定保留多少个构建记录(`buildDiscarder`),设置超时策略(`timeout`),定义构建参
数
(`parameters`)以及环境变量(`environment`),并全局配置...
庖丁解牛
Linux系统分析读书笔记-搭建Linux内核调试环境
庖丁解牛
Linux系统分析读书笔记-搭建Linux内核调试环境 获取源码 从 https://www.kernel.org 下载源码,得到你所选的内核版本对应的 tarball (tar.xz) 文件。 下载5.4版本 unxz linux-5.4.267.tar.xz tar -xvf linux...
php.ini的生命周期的
庖丁解牛
以进程为界,解配置之牛,于运维管理中,求精准之真。 行动指令(给每一位运维/开发者): 确认加载文件:永远不要猜 php.ini 在哪。运行 php --ini (CLI) 或 phpinfo() (Web) 查看 “Loaded Configuration File”。...
《
庖丁解牛
Linuxn内核分析》 部分摘录和笔记
传递函
数
参
数
保存返回值地址 提供函
数
内部局部变量的存储空间 操作系统有2把宝剑:中断上下文、进程上下文 第3章 start_kernel中的最后一句为rest_init,内核启动完成后,有一个call_cpu_idle,当系统没有进程...
jenkins Pipline
庖丁解牛
停顿:Pipeline 可以选择停止并
等待
任工输入或批准,然后再继续 Pipeline 运行。 多功能: Pipeline 支持现实世界的复杂 CD 要求,包括 fork/join 子进程,循环和并行执行工作的能力 可扩展: Pipeline 插件...
C#
111,126
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章