问题标签 [valuetuple]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
74 浏览

c# - Azure 函数 (v1) 中的 ValueTuple 问题

我目前在我的一个 Azure Functions 中遇到问题。我想使用一个使用 ValueTuple 的库。该库是针对 .net Core 2.0 构建的。这导致我的函数中出现以下错误消息:

我已经尝试将相应的 Nuget 包添加到我的函数中:

并通过以下方式引用程序集:

有什么想法可以解决这个问题吗?

非常感谢!

0 投票
0 回答
330 浏览

c# - 为什么我不能使用 Marshal.SizeOf() 来计算 ValueTuple 类型实例的大小?

为什么下面的代码:

throw System.ArgumentException: 'Type 'System.ValueTuple`2[System.Double,System.Double]' 不能作为非托管结构封送;无法计算出有意义的大小或偏移量。

0 投票
1 回答
45 浏览

c# - 通过动态访问 ValueTuple 项时出现 RuntimeBinderException

我正面临ValueTuple<T1,T2>从另一个程序集传递的非常奇怪的行为,使用dynamic. 此代码在特定情况下会RuntimeBinderException在最后一行抛出:

消息是:

TupleTest函数在另一个程序集中定义,如下所示:

emptyclass Priv { }没有可见性修饰符。

但是,如果我添加public class Priv,问题就会消失。

我知道,那个 binder 可能在访问 的实例成员时遇到问题Priv,但在这种情况下,我还没有做到这一点!我要做的就是访问Item1.ValueTuple

有趣的是,如果Priv实现了一些公共接口IFoo,那么替换result.Item1 = (new Priv(), new Priv());result.Item1 = ((IFoo)new Priv(), (IFoo)new Priv())允许dynamic a = i1.Item1成功。

这是否意味着,我根本无法dynamic访问在其他地方定义的值类型为私有(只能使用泛型)的任何公共字段?

0 投票
2 回答
329 浏览

c# - 将数组对转换为数组对(如果可能,使用 LINQ)

我有一些类型ST(例如S=objectT=string)。我有一对这些类型的数组,即

我想把它转换成对数组,即

我怎么做?如果可能的话,我对使用 LINQ 的解决方案最感兴趣。请假设其中的两个数组pairOfArrays具有相同的长度。


我知道另一个方向:

我所寻求的方向的问题是:为了迭代(使用Select等),我需要一个IEnumerable,但(S[], T[])不是IEnumerable。如果我从 开始,那么我不知道如何到达我目前在我的语句pairOfArrays.Item1.Select(...中的相同条目(按索引) 。Item2Select

0 投票
1 回答
369 浏览

c# - 为什么 Visual Studio 监视窗口显示集合中 ValueTuples 的错误值?

当我从集合访问它们的属性时,我发现 ValueTuples 的评估方式不同。

为什么这两条突出显示的行的评估方式不同,如何更改“MyList[0].c”以正确获取值?

在此处输入图像描述

0 投票
1 回答
153 浏览

c# - 如果由于其值类型性质而有太多“字段”,那么 ValueTuple 是不是一个糟糕的选择?

自从我决定使用 Rust 和 Go 使自己多样化后,我变得过分担心复制/引用/移动等。

最近我真的想知道是否ValueTuple也受到典型警告的影响struct,即它的大小不应大于 16 字节以避免在此处和那里复制值类型时出现性能:https ://stackoverflow.com/a/1082341/ 4636721

因此,如果说我们有一个值元组(decimal, decimal, decimal, decimal),这意味着我们最好使用经典Tuple<decimal, decimal, decimal, decimal>类来传递该元组?

[编辑]

用例示例:假设下面的方法会被调用很多

0 投票
2 回答
6298 浏览

c# - ValueTuples 是否适合作为字典键?

我想这可能是一本方便的字典:

哈希会是什么样子?
等效的键类型(结构)是什么样的?

0 投票
0 回答
96 浏览

c# - 使用扩展方法将协变接口解构为 ValueTuples 时的奇怪行为

这是我的协变接口,其中一个返回和可枚举的方法也是协变的(一如既往)。简单的。

现在我想通过使用 a 向该可枚举添加更多数据ValueTuple

现在我收到一个编译器错误,说明它TData data必须始终有效。我明白了,ValueTuple不是协变的。


好吧,那么我将推出我自己的非常特殊的元组,因为我真的希望能够在foreach以后使用那种很好的解构语法:

但是编译器仍然说不。这会导致相同的错误,现在在out TData data.


好的编译器,你,你怎么看这个:

这编译和工作就像一个魅力。但为什么?在这里声明为扩展方法而不是接口方法有什么区别?Deconstruct协方差在哪里停止,不变性从哪里开始?

而且,参数不应该out是协变有效的吗?我的意思是,它实际上是相同的关键字。这对我来说很有意义。

0 投票
3 回答
5106 浏览

c# - ValueTuples 在序列化时会丢失其属性名称

在尝试将命名值元组序列化为 JSON 字符串时,它会丢失分配给项目的名称

我期望序列化的值为

{"type":"A","text":"我是动物"}

但实际结果是

{"Item1":"A","Item2":"我是动物"}

有两件事我很想知道

  • 为什么它会这样
  • 如何获得预期的输出
0 投票
0 回答
156 浏览

c# - 不能使用超过 4 个元素的 ValueTuple 作为 ASP.NET MVC 模型

我正在尝试使用 C# 7 ValueTuple 作为局部视图的模型。当我使用 4 元组时它工作正常:

但是,如果我尝试使用 5 元组:

我得到一个编译错误:

当我查看“临时 ASP.NET 文件”下生成的代码时,我想我看到了问题:

具体来说,ValueTuple 被切断(这就是为什么我认为编译器抱怨缺少',':

除了创建一个单独的类之外,还有其他解决方法吗?我已经尝试过使用 .NET 4.6 下的 System.ValueTuple NuGet 包以及将我的项目切换为使用 .NET 4.7,但我得到了同样的错误。我也设置了system.codedom langversionto latest