首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#元组,构造-解构性能

C#元组,构造-解构性能
EN

Stack Overflow用户
提问于 2017-12-11 17:14:55
回答 1查看 534关注 0票数 0

我一直在用以下方式编写一些代码:

代码语言:javascript
复制
a1 = b1;
a2 = b2;
a3 = b3;
...
an = bn;

突然,我意识到,对于我自己,以及我正在编写的当前算法(.)更令人愉快的是以下列形式写出这些作业:

代码语言:javascript
复制
(a1, a2, a3, ..., an) = (b1, b2, b3, ..., bn);

现在,我想知道这种编写代码的方式对性能的影响。我认为在这里,元组的构造-解构可以通过编译器来优化。但也许不是?请注意,b1、b2、.、bn可以是值或表达式。而且,如果不能进行优化,那么n的大小将很重要(我认为)。

因此,有一个具体的问题:考虑到所有可能的细节,能否有人解释两种代码编写方法在性能上的差异?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-11 17:19:19

像这样使用,它们甚至根本就不是真正的ValueTuple,因为编译器已经把这些都去掉了。

比较和对比IL:

代码语言:javascript
复制
var a = 1;
var b = 2;
var c = 3;
var d = 4;

转到

代码语言:javascript
复制
IL_0001:  ldc.i4.1    
IL_0002:  stloc.0     // a
IL_0003:  ldc.i4.2    
IL_0004:  stloc.1     // b
IL_0005:  ldc.i4.3    
IL_0006:  stloc.2     // c
IL_0007:  ldc.i4.4    
IL_0008:  stloc.3     // d

代码语言:javascript
复制
var (a, b, c, d) = (1, 2, 3, 4);

涉及:

代码语言:javascript
复制
IL_0001:  ldc.i4.1    
IL_0002:  stloc.0     // a
IL_0003:  ldc.i4.2    
IL_0004:  stloc.1     // b
IL_0005:  ldc.i4.3    
IL_0006:  stloc.2     // c
IL_0007:  ldc.i4.4    
IL_0008:  stloc.3     // d

一样的。

所以..。一旦编译器实现了它的魔力,它实际上只是一个样式选择。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47757992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档