问题标签 [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 投票
2 回答
436 浏览

c# - In C# 7, How Can I Make a New ValueTuple from an Existing and New Elements?

In C# 7 we have value tuples of the form (a, b, c, ...) and deconstruction of them (via var (a, b, c, ...) = (a, b, c, ...)).

I have a tuple of the form (row: <int>, column: <int>), and I want to create a new tuple of the form (row: <int>, column: <int>, content: <char>) using the previous one.

In Python I can do:

Or with dicts:

Is there a similar pattern in C#?

I can of course deconstruct the tuple into variables, then recombine them:

However the actual situation is more complex. I have a function that returns the existing tuple, and an one-line function that constructs the new. If I simplify this it will be like:

For the simplicity and the readability, I want it as an arrow function (T F() => E;). If I would implement my suggestion, it will be seem like:

Is there a more elegant way to do that?

0 投票
1 回答
643 浏览

c# - 是什么让 ValueTuple 协变?

这在 C# 7.3(框架 4.8)中正确编译:

我知道这是以下的语法糖,它也可以正确编译:

因此,看来 ValueTuples 可以协变地分配,这太棒了

不幸的是,我不明白为什么:我的印象是 C#只支持接口和委托的协变ValueType也不是。

事实上,当我尝试用自己的代码复制此功能时,我失败了:

那么,为什么ValueTuples 可以协变赋值,而MyValueTuples 不能呢?

0 投票
1 回答
986 浏览

c# - 用括号对数据进行分组如何工作?

我最近遇到了这个:

它背后的想法似乎很神奇,以前每当我想映射两个变量时,我都会使用 KeyValuePair。似乎这在 .NET Core 中可用,而不是在我主要编程的常规 .NET 4.7.2 上。

我是否遗漏了什么,或者这仅在 .NET Core 上可用?这个变量分组的名称是什么(所以我可以进一步研究)?是否与创建具有两个变量的对象相同?

这是一个例子:

这是一个愚蠢的问题,但感谢您的帮助。

0 投票
0 回答
53 浏览

.net - 我认为 ValueTuple 是 .NET Standard 2.0 内置的?

我有一个使用 .NET Standard 2.0 类库 DLL 运行的 .NET Framework 4.7.2 网站。我以为我了解 ValueTuple 和 .NET Standard 2.0。显然我没有。这是在 .NET Standard 2.0 DLL 中定义的 ValueTuple。

这是从位于 4.7.2 DLL 中的另一个文件调用它时发生的情况......

编译器错误消息:BC30643:属性“StateManufacturers”的类型不受支持。

如果我采用完全相同的代码并将其移动到 .NET Framework 4.7.2 类库 DLL,它就可以正常工作。 根据此链接,它应该可以在 .NET Standard 2.0 中正常工作。我错过了什么?MSFT 鼓励我们迁移到 .NET Standard 2.0+,但这样的事情不断发生……

0 投票
2 回答
384 浏览

c# - 您可以在 Dictionary 中的 ValueTuple 值中声明项目名称吗?

是否可以将 ValueTuple 声明为 Dictionary 中的值,在 ValueTuple 中包含项目的名称?

我试过了:

但我真的没想到它会起作用,但后来也没有:

请注意,前面的声明在没有提及名称和 id 的情况下有效,但是我不能按名称访问元组成员..

0 投票
1 回答
108 浏览

c# - System.ValueTuple NuGet 如何扩展我的语言功能?

如果使用 .Net < 4.7 元组则不受支持。如果我安装 NuGet“System.ValueTuple”,我可以编写如下代码

使用 .Net 4.6.2。这怎么可能?NuGet (DLL) 如何更改我的可用语言功能?是否有任何关于这里发生的事情的文档?我找不到任何东西。

0 投票
0 回答
149 浏览

c# - JQuery 序列化为值元组

我正在尝试将带有 JQuery 的表单提交给 C#,使用值元组作为目标对象的属性之一。但是,它似乎不起作用;我猜这与值元组的构造方式有关,因为在以相同方式Obj.Prop=x&etc..将值传递给没有默认构造函数的对象时也会出错。

下面是我正在做的事情。我想知道是否有办法以类似的方式做到这一点。我知道我可以创建一个与元组匹配的对象,或者分解属性并手动更改序列化字符串;但我希望尽可能避免这些。

表单序列化创建:

MyMethod 有一个参数,SubmissionObject submission如下所示:

但是,该对象将填充为

代替

0 投票
2 回答
467 浏览

c# - 元组 lambda 语法突然在 C# 中不起作用

我正在使用.NET Framework 4.7,我已经实现了几个这样的语法

它已经通过获得结果而起作用var

但是今天当我打开visual studio时,我所有的var转换都dynamic作为IDE的建议输入,不再是a (bool isSuccess, string message),并且在运行时抛出错误

当我设置断点时,它们会显示item1,item2而不是isSuccess,message

在此处输入图像描述

在此处输入图像描述

我通过明确声明进行了测试,它有效吗?这很困惑

在此处输入图像描述

简而言之,问题是我已经使用ValueTuple函数(bool isSuccess, string message)类型语法很长时间了,并且通常使用var. 知道该var类型直到今天它带有type和dynamicoff all属性。isSuccessmessage

更短:我的预期:(我在 .Net Core 2.1 中测试过)

在此处输入图像描述

IDE 的作用:

在此处输入图像描述

如何解决?这是一个错误?

0 投票
0 回答
215 浏览

c# - Doxygen 和 C# ValueTuple

我正在使用 Doxygen 1.8.17 来记录一个 C# 项目,我正在尝试记录这个:

该方法的返回类型是ValueTuple。Doxygen 将其作为类的静态公共属性处理,而不是作为成员函数,并且仅将 L 显示为返回值:

在此处输入图像描述

有没有让 Doxygen 能够处理 ValueTuple 的选项?有没有人有解决方法?我想避免为此输出定义一个特殊的类。

在此先感谢您的帮助。

吉克斯

0 投票
0 回答
59 浏览

c# - 如何将集合转换为值元组?

目的是从集合动态创建 valueTuple。在此集合中,值可能是不同的类型。创建的 ValueTuple 将具有相同的值类型。

从调试信息来看,这两个 valueTuples 包含相同的值。但是,类型不同。vt1 是对象,对象。vt2 是整数,字符串。

在此处输入图像描述

如何使 vt1 也是 (int, string) 类型?

我不能使用创建 vt2 的方式,因为集合中的元素类型每次都不同。下一步,列表中的元素可能是 1, "any string", 2, 3, "other string"。此时,ValueTuple 将是 (int, string, int, int, string) 而不是 (object,object,object, object, object)。

欢迎任何建议!谢谢!