VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1436|回复: 11

传值还是传实例?

[复制链接]

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-19 21:00:01 | 显示全部楼层 |阅读模式
常常看到在插入数据时,掉用数据处理层方法时,好多人都是在工程里建一个数据类。然后再在调用数据处理层方法之前实例那个数据类并给里面的属性付值。再将实例做为参数传入数据处理的方法中?
我想问一下这样做比直接将每个变量做为参数传进去好在哪里?
大家能谈谈这两种传递参数的方式的优劣吗?
回复

使用道具 举报

0

主题

73

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-1-27 15:27:01 | 显示全部楼层
因为引用类型如果直接传递,有可能被方法内部修改
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-27 15:54:02 | 显示全部楼层
没有什么大的区别!
回复

使用道具 举报

0

主题

58

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-1-27 16:09:01 | 显示全部楼层
传对象的好处就是可以保持接口的统一,如果有变动,只在内部改动,而不是改接口
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-1-27 17:45:01 | 显示全部楼层
因为引用类型如果直接传递,有可能被方法内部修改

能举例说下吗?
那就是说如果在调用完方法后就不用那些参数数据的话两者是一样的吗?
那如果参数多时,,比如有10多个参数时,在效率上会有差别吗?
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-1-27 19:27:02 | 显示全部楼层
everever30
传对象的好处就是可以保持接口的统一,如果有变动,只在内部改动,而不是改接口

那就是说二者的差别仅仅是在编写代码上面吗?
在运行代码时是一样的啦?
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-1-27 20:54:01 | 显示全部楼层
在C#中默认就是传引用的.

        string[] ary = new string[]{"a"};
                        this.DoChante(ary);
                        Response.Write(ary[0]);


        public void DoChante(string[] a)
                {
                        a[0] = "B";
                }
回复

使用道具 举报

0

主题

73

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-1-27 22:09:01 | 显示全部楼层
shenmue024 已经写了,呵呵。
至于效率肯定是用实例传递参数会差一点,不过代码足够优秀的话,应该可以忽略的,呵呵。
回复

使用道具 举报

0

主题

27

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-1-27 22:54:01 | 显示全部楼层
传引用还是传实例要看你的具体应用了,一般情况下都是传引用,一是快,二是可以在类的内部来修改变量的值,如果你不想让修改原来的值,那么可以考虑传实例。
回复

使用道具 举报

0

主题

64

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-1-27 23:27:01 | 显示全部楼层
对数据操作进行抽象,就能用的久一点、问题少一点,避免不断重构。

如果A类型对象的20个子类与B类型的20个子类发生关系,可能需要定义400种关系,需要写10大本书才能说明,但是如果子类都继承父类,你就不用将子类对外的联系零碎地描述,也许只用2页A4纸就把协议说清楚了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表