问题标签 [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 回答
1731 浏览

c# - 如何解构可空元组?

我正在使用NullableContextOptions启用了(可空引用)的 C# 8.0。

我有一个带有这个签名的函数:

基本上,如果有非空行,则返回该行和内容,如果没有,则返回。

问题是我不知道如何解构它。如果我尝试:

我收到 4 个语法错误:

在此处输入图像描述

所以我只能使用:

这破坏了目的。lineInfo是类型struct<T> where T is (int line, string content)

无论如何要解构一个可为空的元组?

编辑:发布问题后,我想到允许解构可空元组是没有意义的,因为可能无法确定变量的数据类型。这是我目前的修复,但想知道这是否是最好的方法:

0 投票
3 回答
2181 浏览

c# - 如何动态创建 .NET C# ValueType 元组?

我想从一组值动态创建一个值类型元组。

示例:我有一个给定的IEnumerable<T>,我想基于该集合创建一个元组。

我怎样才能做到这一点?

似乎可以动态实现值类型元组内的访问,但没有任何迹象表明可以对值类型元组的创建进行相同的操作。

我的目的是利用本文中描述的此类元组的 Equality 和 HashCode 的属性

0 投票
3 回答
8616 浏览

c# - 传递 ValueTuple 而不是参数

是否可以这样做(或者我可能需要特定版本的 C#)?

更新:我的意思是传递元组而不是单独的参数。

0 投票
1 回答
2428 浏览

c# - 为什么 ValueTuple 不能是 const?

声明为字段的 ValueTuple 类型可以是可变的:

或只读:

这种(im)可变性适用于每个成员。我希望它也可以扩展到 const 声明:

但是这个语句不编译。在某些情况下它是一个不受欢迎的功能,还是只是没有实现?

编辑 好的,我现在明白了。我的问题是基于 C# 编译器对待 ValueTuples 不同于其他类型的假设,关于关键字 readonly。所以,如果它已经是一个例外,为什么不为 consts 再做一个例外。但是,事实上,这个逻辑似乎适用于所有结构。所以这不起作用:

0 投票
1 回答
2212 浏览

.net - ValueTuples 可以与 .net 4.5.2 一起使用吗?

我有一个针对 .net 框架 4.52 的 MVC 5 项目,我通过 Nuget 安装了 System.ValueTuple。我在 Windows 7 上使用 Visual Studio 2017。在开发过程中,Visual Studio 不会抱怨 Tuple 返回类型,但是当我构建时出现一系列错误:

这是破坏的方法:

我不知道如何解决这个问题,只是认为它与我的框架版本不兼容。几项广泛的在线搜索对此一无所知。

0 投票
1 回答
165 浏览

c# - 从 ref 变量中解构元组

我有以下方法。

以下代码工作正常:

但我需要使用该ref功能。以下代码也有效:

现在我想解构元组。以下代码将无法编译:

是否可以解构ref变量?

0 投票
1 回答
986 浏览

c# - 使用带有值类型元组的 `is` 运算符会出错

我正在尝试检查object变量是否存在(int, int),如果是,我将使用强制转换的变量,因此我尝试了以下代码:

MyMethodWithIs方法在编辑器中给出以下错误:

没有找到适合类型的解构实例或扩展方法

我的问题

为什么一个工作正常,但另一个完全出错?我认为MyMethodWithIs更具可读性并且更适合用于我的案例,但由于出现错误,我无法使用它。

0 投票
2 回答
311 浏览

c# - valuetuple 不适用于我的 4.7.2 项目之一

我在解决方案中有多个项目,都针对 4.7.2。然后我在一个返回 valueTuple 的 lib 项目中添加一个方法。多个项目调用此方法,除一个项目外,所有项目都可以正常(编译)。这一项目产生编译器错误。

我已经将这个项目中的所有 nugets pkgs 与其他项目进行了比较,差异很小,然后我取消了那些不同的 nugets,仍然是相同的错误。我四处搜索,知道 4.7 已经内置了 valuetuple,然后我检查了这个项目,它没有System.ValueTuple任何地方的 nuget 或硬编码 System.ValueTuple.dll。

请帮忙。我总是可以回到 Tuple<> 方式,但 valuetuple 更干净。除非你告诉我还有更多隐藏的问题。

谢谢!

导致错误的行:

就是这样,编译器抱怨在返回的元组中找不到项目。我在这里列出了编译器错误,它抱怨 valuetuple 中的第一项“CreatedUsers”。实际上,每个其他值元组项“ErrorMsgsA”、ErrorMsgsB 都有一个编译器错误。请记住,我在这个 valuetuple 中引用项目的其他项目都很好,没有错误。

0 投票
1 回答
414 浏览

c# - 值元组从 WebAPI 公开错误的参数名称

我正在使用网络 API。我有点懒,决定从我的控制器返回一个值元组。

JSON 响应似乎没有使用适当的命名,这是被优化了吗?

注意:我知道我可以明确地制作一个模型来避免这个问题。我想了解正在发生的事情,为什么我的值元组名称在响应中没有得到尊重?

0 投票
0 回答
108 浏览

c# - 初始化 ValueTuple 数组的最佳方法

我已经做了一个初始化ValueTuples数组的扩展方法,并意识到它可以通过两种不同的方式完成。我可以用新元组替换数组元素,或者更改现有元素的属性(因为ValueTuple<T1, T2>结构是可变的)。我想知道使用一种方法或另一种方法之间是否有任何实际区别。以下是候选人: