首页 新闻 会员 周边

c# new 实例化区别

0
悬赏园豆:10 [已解决问题] 解决于 2019-03-27 15:33

求解:两种情况下对比的两种写法,有什么不同,会有性能问题吗?

小小一菜鸟的主页 小小一菜鸟 | 初学一级 | 园豆:100
提问于:2018-08-29 14:44
< >
分享
最佳答案
0

release 下看一看IL代码不久好了么,没差别

收获园豆:10
czd890 | 专家六级 |园豆:14412 | 2018-08-29 14:57

可是为什么项目经理要求我们按照每种情况的第一种写法?

小小一菜鸟 | 园豆:100 (初学一级) | 2018-08-29 15:46

@MyTestDays: 

第一种写法

更清晰明了。

以后要修改也方便一些。比如你的getinfo,以后要在调用难道在new一个,或者修改现在的代码,提取变量?容易出错,出bug。

 

czd890 | 园豆:14412 (专家六级) | 2018-08-29 16:20

@MyTestDays: 因为你们项目经理比较闲

会长 | 园豆:12401 (专家六级) | 2018-11-01 18:04
其他回答(7)
0

没有差别。

Lxk- | 园豆:208 (菜鸟二级) | 2018-08-29 15:39
0

没区别没区别

wdwwtzy | 园豆:114 (初学一级) | 2018-08-29 17:35
0

只能说明你们项目经理是个喜欢装逼的人,性格使然而已。对于我,能一句话表达清楚的我绝对不用两句话,能属性的多半不用函数表达,一个类文件通常尽量百把行,两三百行属于少数,至于达到或超过三四百行的极少数。

花飘水流兮 | 园豆:13560 (专家六级) | 2018-08-30 10:05
0

没什么区别,第一种更清晰明了,便于后期调用其他信息,如果你只是获取就这一个信息这么写无所谓,PM提的我觉得可以理解,下面负责开发的考虑很少,实现功能就行,PM考虑的要多了,如果你这里这个后期有修改,需要获取用户的其他信息,要是还用new的话会重复创建类多次分别内存,所以建议还是用第一种,创建一次后续直接获取就行了

sunkejava | 园豆:178 (初学一级) | 2018-08-30 15:38
0

用多次就第一种,可以重复使用
只用一次就第二种,看起来比较简洁

oneall | 园豆:204 (菜鸟二级) | 2018-08-30 17:18
0

从性能上没有区别的。

 

但是从代码整洁的角度上会有一定区别。

第一种,不停的声明新的变量。在不需要复用的时候,产生大量垃圾变量,占用变量名称。声明变量一般要求能从变量名称中看出来变量的作用,但是变量名称又不适宜太长,难么我们能描述词汇就变得很有限。那么就会出现变量名称的混淆和作用不清。

  举个例子,有个类“Hen”可以LayEgg,而“Egg”本身可以进行例如“煎炒烹炸”多种烹饪方法。来客人点菜,比如1个煮完切块,10个煎。在不考虑使用循环的情况下,采用第一种方式我们会写出如下代码

//弄来一只母鸡
var hen = new Hen();

//让母鸡下11个蛋
var egg1 = hen.LayEgg();
var egg2 = hen.LayEgg();
var egg3 = hen.LayEgg();
//....
var egg10 = hen.LayEgg();
var egg11 = hen.LayEgg();

//拿一个盘子
var plate = new Plate();
//第一个煮
var egg1Cook = egg1.Cook();
var egg1Cut = egg1Cook .Cut();
plate.Add(egg1Cut);
//剩下的煎
var egg2Fried = egg2.Fried();
plate.Add(egg2Fried);
var egg3Fried = egg3.Fried();
plate.Add(egg3Fried);
//...
var egg10Fried = egg10.Fried();
plate.Add(egg10Fried);
var egg11Fried = egg11.Fried();
plate.Add(egg11Fried);

然后看到你的代码的小伙伴顿时整个人就不好了。这egg1,2,3,4,5,都什么鬼?现在业务逻辑还都简单,变量名称描述的东西也比较简单,如果再复杂,估计人类贫乏的语言就会不够用。

在大型系统中,资源是个很紧张的东西,殊不知,变量名也是一种资源。

 

而第二种情况,会让你代码简洁不少,而语言逻辑也会更清晰。

在一些场景下,例如:需要复用,Debug等时候,写成一长串则不太好用。

即使第二种方法使你的代码看起来更简洁了,但是没用良好的换行习惯一样会使代码变得无法阅读。例如一个特别长的lambda表达式。

 

两种方式结合使用,养成良好的编码习惯才是硬道理。

任何语法在诞生的时候都是优雅的。但是如果滥用,则就让语言失去了其优雅。

写代码的相声演员 | 园豆:517 (小虾三级) | 2018-08-30 19:25
0

没区别,你只是把一步拆成多步了,比如你要走去学校,不过你是大步走过去,还是小步走着去,你都要走一样的距离

chester·chen | 园豆:507 (小虾三级) | 2018-11-23 11:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册