当前位置: 首页 > 编程语言 > C#

如何创建命名引用类型的元组?分享

时间:2023-04-11 02:17:58 C#

如何创建命名引用类型元组?以下行创建一个命名的ValueTuple:vartuple=(a:1,b:2,c:3,d:4,e:5,f:6);无法有效传递值类型。C#7是否提供了一种方法来创建元元组类型的命名元组?如果您的意思是有一种方法可以将其他名称附加到System.Tuple实例的属性,那么没有。根据您的需要,您可以通过使用ToValueTuple中的ToValueTuple重载将Sy??stem.Tuple实例转换为System.ValueTuple实例并使用ToValueTuple重载返回它来实现ToTuple。如果您真的不需要元组,可以使用Deconstruct重载或var(v1,..,vn)=tuple解构语法将它们解构为离散变量。不确定是什么问题;一切都按预期工作,传递带有out、ref和newreflocal的新ValueTuple。我正在使用.NET4.7,并在.csproj设置“高级...”按钮中将我的C#7编译器设置为“最新”。显示函数:static(int,int)g=(1,2);staticvoidSetValues(inta,intb,ref(int,int)tt)=>tt=(a,b);staticvoidSetValuesOut(inta,intb,out(int,int)tt)=>tt=(a,b);staticref(int,int)GetKnownTuple()=>refg;staticref(int,int)SelectRef(intix,ref(int,int)x,ref(int,int)y,ref(int,int)z){if(ix==0)returnrefx;如果(ix==1)返回refy;返回参考z;}使用方法示例:///使用'refreturn'来初始化一个新的'reflocal'元组'aa'ref(int,int)aa=refGetKnownTuple();///或使用不带'ref'的相同函数来创建本地COPY'bb'varbb=GetKnownTuple();///使用'ref'参数修改本地副本'bb'的值('aa/g'未更改)SetValues(3,4,refbb);///解构“reflocal”元组;从引用对象'g'(1,2)(intx,inty)=aa中读取值;///'reflocal'对本地元组复制的引用ref(int,int)dd=refbb;///使用“out”参数构造一个新的(非“ref”)localtuple'cc'SetValuesOut(y,x,out(int,int)cc);///...或将“out”与“reflocal”一起使用以完全替换现有的引用对象(此处为“g”)SetValuesOut(5,6,outaa);///'refreturn'函数也可以用作赋值左值...GetKnownTuple()=(7,8);///('aa/g'被改变;局部'bb'和'cc'保持不变)///...或通过'reflocal'变量分配一个引用(再次改变'g')aa=(9,10);///通过'refreturn'进行条件赋值(再次更改'g')SelectRef(0,refaa,refbb,refcc)=(11,12);应该清楚更多是可能的,但由于OP的问题没有得到太具体的进一步要求,所以我不能在这里展示所有内容以上是C#学习教程:如何创建命名引用类型的元组?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: