jjzjj

valuetuple

全部标签

c# - 检测对象是否为 ValueTuple

我有一个用例,我需要检查某个值是否为C#7ValueTuple,如果是,则循环遍历每个项目。我尝试检查objisValueTuple和objis(object,object)但它们都返回false。我发现我可以使用obj.GetType().Name并检查它是否以"ValueTuple"开头,但这对我来说似乎很蹩脚。欢迎任何替代方案。我也有获取每个项目的问题。我尝试使用此处找到的解决方案获取Item1:HowdoIcheckifapropertyexistsonadynamicanonymoustypeinc#?但是((dynamic)obj).GetType().GetPropert

c# - 是否可以解构出 ValueTuple 参数?

是否可以解构不是从方法返回但作为输出参数的元组?我不确定我是否正确地表达了自己,甚至使用了正确的术语,所以这里有一些例子:voidOutMethod(out(intaNumber,stringsomeText)output)=>output=(15,"yo");voidUsage(){{//Works,ofcourse.OutMethod(outvartuple);//But*slightly*aestheticallyunappealingtouse.varusage=$"{tuple.someText}:{tuple.aNumber}";}{//Wouldbeawesome,but

c# - 在 C# 7 中创建一个 System.ValueTuple 数组

在我的代码中我有:privatestaticreadonlyValueTuple[]test={("foo","bar"),("baz","foz")};但是当我编译我的代码时,我得到:TypoGenerator.cs(52,76):errorCS1026:Unexpectedsymbol`,',expecting`)'TypoGenerator.cs(52,84):errorCS1026:Unexpectedsymbol`)',expecting`)'TypoGenerator.cs(52,94):errorCS1026:Unexpectedsymbol`,',expecting`)

c# - C# 7 中的 C# 匿名类型是否多余

自从C#7引入值元组后,是否存在它们比元组更适合的有意义的场景?例如下面一行collection.Select((x,i)=>(x,i)).Where(y=>arr[y.i].f(y.x)).ToArray();生成如下行collection.Select((x,i)=>new{x,i}).Where(y=>arr[y.i].f(y.x)).ToArray();冗余。如果一个用例比另一个更好用(出于性能原因或优化原因),会是什么用例?显然,如果需要超过6个字段,则不能使用元组,但是否有更细微的差别? 最佳答案 匿名类型和C#7元组之

c# - C# 7 中 ValueTuple 的 KeyValuePair 命名

C#7.0(在VS2017中)的新功能是否可以将元组字段名称转换为KeyValuePairs?假设我有这个:classEntry{publicstringSomeProperty{get;set;}}varallEntries=newDictionary>();//addingsomekeyswithsomelistsofEntry做这样的事情会很好:foreach((intcollectionId,Listentries)inallEntries)我已经将System.ValueTuple添加到项目中。能这么写,比这种传统的写法好太多了:foreach(varkvpinallEntr

c# - 是否可以使用 C#7 绑定(bind)到 WPF 中的 ValueTuple 字段

如果我有一个viewmodel属性public(stringMdf,stringMdfPath)MachineDefinition{get;set;}我尝试在XAML/WPF中绑定(bind)它或同样的错误我看到ValueTuple字段实际上是字段而不是属性。这是问题所在吗? 最佳答案 令人困惑的是,对于旧式元组(C#7之前),所有项目都是属性https://msdn.microsoft.com/en-us/library/dd386940(v=vs.110).aspx因此可绑定(bind)。对于ValueTuple,它们是字段ht

c# - 单元素元组和零元素元组有什么用?

C#7.0引入了值元组以及对它们的一些语言级别支持。他们addedthesupport单个和零元素元组也是如此;但是,我无法找到它们有用的任何场景。通过ValueTuple.Create重载,我可以创建任何类型的元组,但C#7.0语法只允许至少两个元素:Microsoft(R)RoslynC#Compilerversion2.8.3.62923Loadingcontextfrom'CSharpInteractive.rsp'.Type"#help"formoreinformation.>ValueTuple.Create()[()]>ValueTuple.Create(1)[(1)]>

c# - 使用 new 创建时命名 ValueTuple 属性

我知道我可以在隐式创建元组时命名参数,例如:varme=(age:21,favoriteFood:"Custard");是否可以在显式创建元组时命名参数?即varme=newValueTuple(21,"Custard"); 最佳答案 不,你不能。ValueTuple类型实际上独立于C#中的命名字段支持。后者更像是匿名类型的命名属性。也就是说,编译器分析代码并根据您的声明和用法为适当的成员生成别名。编译器通过赋值来学习字段的名称。由于基本构造函数语法不提供命名字段的机制,因此您不能使用它直接生成具有命名字段的元组。当然,您可以通过多

c# - 使用 new 创建时命名 ValueTuple 属性

我知道我可以在隐式创建元组时命名参数,例如:varme=(age:21,favoriteFood:"Custard");是否可以在显式创建元组时命名参数?即varme=newValueTuple(21,"Custard"); 最佳答案 不,你不能。ValueTuple类型实际上独立于C#中的命名字段支持。后者更像是匿名类型的命名属性。也就是说,编译器分析代码并根据您的声明和用法为适当的成员生成别名。编译器通过赋值来学习字段的名称。由于基本构造函数语法不提供命名字段的机制,因此您不能使用它直接生成具有命名字段的元组。当然,您可以通过多

c# - 如何创建 ValueTuple 列表?

是否可以在C#7中创建ValueTuple列表?像这样:ListMethod(){returnSomething;} 最佳答案 您正在寻找这样的语法:Listlist=newList();list.Add((3,"first"));list.Add((6,"second"));在你的情况下你可以这样使用:ListMethod()=>newList{(3,"first"),(6,"second")};您还可以在返回之前命名值:ListMethod()=>...并且您可以在(重新)命名它们时接收这些值:Listresult=Method