问题标签 [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.
c# - Azure 函数 (v1) 中的 ValueTuple 问题
我目前在我的一个 Azure Functions 中遇到问题。我想使用一个使用 ValueTuple 的库。该库是针对 .net Core 2.0 构建的。这导致我的函数中出现以下错误消息:
我已经尝试将相应的 Nuget 包添加到我的函数中:
并通过以下方式引用程序集:
有什么想法可以解决这个问题吗?
非常感谢!
c# - 为什么我不能使用 Marshal.SizeOf() 来计算 ValueTuple 类型实例的大小?
为什么下面的代码:
throw System.ArgumentException: 'Type 'System.ValueTuple`2[System.Double,System.Double]' 不能作为非托管结构封送;无法计算出有意义的大小或偏移量。
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
访问在其他地方定义的值类型为私有(只能使用泛型)的任何公共字段?
c# - 将数组对转换为数组对(如果可能,使用 LINQ)
我有一些类型S
和T
(例如S=object
和T=string
)。我有一对这些类型的数组,即
我想把它转换成对数组,即
我怎么做?如果可能的话,我对使用 LINQ 的解决方案最感兴趣。请假设其中的两个数组pairOfArrays
具有相同的长度。
我知道另一个方向:
我所寻求的方向的问题是:为了迭代(使用Select
等),我需要一个IEnumerable
,但(S[], T[])
不是IEnumerable
。如果我从 开始,那么我不知道如何到达我目前在我的语句pairOfArrays.Item1.Select(...
中的相同条目(按索引) 。Item2
Select
c# - 如果由于其值类型性质而有太多“字段”,那么 ValueTuple 是不是一个糟糕的选择?
自从我决定使用 Rust 和 Go 使自己多样化后,我变得过分担心复制/引用/移动等。
最近我真的想知道是否ValueTuple
也受到典型警告的影响struct
,即它的大小不应大于 16 字节以避免在此处和那里复制值类型时出现性能:https ://stackoverflow.com/a/1082341/ 4636721
因此,如果说我们有一个值元组(decimal, decimal, decimal, decimal)
,这意味着我们最好使用经典Tuple<decimal, decimal, decimal, decimal>
类来传递该元组?
[编辑]
用例示例:假设下面的方法会被调用很多
c# - ValueTuples 是否适合作为字典键?
我想这可能是一本方便的字典:
哈希会是什么样子?
等效的键类型(结构)是什么样的?
c# - 使用扩展方法将协变接口解构为 ValueTuples 时的奇怪行为
这是我的协变接口,其中一个返回和可枚举的方法也是协变的(一如既往)。简单的。
现在我想通过使用 a 向该可枚举添加更多数据ValueTuple
:
现在我收到一个编译器错误,说明它TData data
必须始终有效。我明白了,ValueTuple
不是协变的。
好吧,那么我将推出我自己的非常特殊的元组,因为我真的希望能够在foreach
以后使用那种很好的解构语法:
但是编译器仍然说不。这会导致相同的错误,现在在out TData data
.
好的编译器,你,你怎么看这个:
这编译和工作就像一个魅力。但为什么?在这里声明为扩展方法而不是接口方法有什么区别?Deconstruct
协方差在哪里停止,不变性从哪里开始?
而且,参数不应该out
是协变有效的吗?我的意思是,它实际上是相同的关键字。这对我来说很有意义。
c# - ValueTuples 在序列化时会丢失其属性名称
在尝试将命名值元组序列化为 JSON 字符串时,它会丢失分配给项目的名称
我期望序列化的值为
{"type":"A","text":"我是动物"}
但实际结果是
{"Item1":"A","Item2":"我是动物"}
有两件事我很想知道
- 为什么它会这样
- 如何获得预期的输出
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
langversion
to latest
。