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

asp.net - C# 7.0 值元组编译错误?

当我尝试编译以下代码时:

我收到编译器错误:“表达式树可能不包含元组文字。”

所以我也试过这个:

结果是运行时错误:'Cannot resolve method Void .ctor(System.String, System.String) 因为方法句柄 System.ValueTuple`2[T1,T2] 的声明类型是通用的。向 GetMethodFromHandle 显式提供声明类型。

我用谷歌搜索了这个问题的解决方案,但没有什么真正有用的。

任何帮助都非常感谢。

谢谢

0 投票
6 回答
617 浏览

c# - c# 7.2 默认表达式和等于(错误?)

我正在使用 Visual Studion 2017 版本 15.5.2 和 C# 版本 7.2。重点:

但是如果我使用 ValueTuple:

它应该是这样的吗?

0 投票
1 回答
523 浏览

c# - 为什么 ValueTuple 使用非标准的 IComparable 实现?

ValueTuple.IComparable.CompareTo(Object)的文档说它返回:

如果 other 是 ValueTuple 实例,则为 0;否则,如果 other 为空,则为 1。

这使得IComparable实现看起来毫无用处,除了可能不会破坏可能期望实现接口的代码。较旧的参考Tuple类确实遵循标准实现(尽管它可能仅在项目支持时才有效IComparable)。

文档说IComparable表明可以对类型进行排序,但情况并非如此ValueTuple

此接口由其值可以排序或排序的类型实现。它要求实现类型定义一个方法,CompareTo,该方法指示当前实例在排序顺序中的位置是在相同类型的第二个对象之前、之后还是相同。(...)

CompareTo 方法的实现必须返回具有三个值之一的 Int32,如下表所示。

小于零当前实例在排序顺序中位于 CompareTo 方法指定的对象之前。

此当前实例出现在排序顺序中与 CompareTo 方法指定的对象相同的位置。

大于零此当前实例在排序顺序中遵循由 CompareTo 方法指定的对象。

所以我的问题是:

  • 为什么不像 Tuple 那样ValueTuple实现呢?CompareTo
  • 为什么IComparable即使它不支持有意义的排序,它也会实现?
0 投票
1 回答
1750 浏览

c# - 从缓存的对象中转换 ValueTuple

当我检查我的缓存以查看我的 ValueTuple 是否在缓存中时,我使用下面的代码。在这种情况下,返回的值为 null(也就是缓存中不存在)。当代码运行时,我object not set to instance of an object在第一行得到错误。是否有正确的方法将对象转换为 ValueTuple?

0 投票
1 回答
352 浏览

c# - 从值元组创建子元组

C# 7 ValueTuple 是否有类似于 Python 切片的功能?C# 中值元组的语法类似于 Python,但例如我找不到从元组获取子元组的优雅方法。

在 Python 3 中:

在 C# 7 中:

0 投票
1 回答
1165 浏览

c# - 我可以在 ValueTuple 中返回泛型类型吗?

这是一些示例代码。我收到错误“无法将类型'string'隐式转换为'T'”

我该怎么做呢?这超出了 ValueTuple 的限制吗?

我正在使用的真实代码示例

0 投票
1 回答
453 浏览

c# - 如何将 ValueTuple 命名功能与匿名方法一起使用?

我想使用 ValueTuple 的命名功能如下:

但它不会编译并显示不是很有帮助的错误消息。然而,这些都编译:

尝试更直接的方法,这不会编译但会给出更有用的错误消息:

这导致尝试这个,它编译:

这最终激发了这一点,它编译:

这是 IEnumerable 扩展方法的普遍问题吗?看起来不是因为它编译:

为什么我必须求助于 projection6 语法才能让它工作?

0 投票
5 回答
16236 浏览

c# - 检查值元组是否为默认值

如何检查 System.ValueTuple 是否为默认值?粗略的例子:

MyMethod我可以使用defaultC# 7.2 的语法返回默认值。我无法检查默认情况下?这些是我尝试过的:

0 投票
1 回答
1243 浏览

c#-7.0 - 为 ValueTuple 中的命名元素添加 XML 文档

ValueTupleC# 7 中,现在可以编写返回或使用复合对象的方法和属性,而无需显式声明类型。然而,当没有提供文档时,这些命名元组可能会造成混淆。

由于记录库的主要和可能最方便的方法是使用 XML 文档,有没有办法使用 XML 文档来提供命名元组中变量的描述?

我知道显而易见的解决方案是声明一个类型并相应地记录它。但是,由于某些无法完成的“原因”,是否可以将 XML 文档中的数据成员记录在ValueTuple?

注意ValueTuple.

0 投票
0 回答
1211 浏览

c# - Upgrade EFCore: Could not load file or assembly System.ValueTuple, Version=0.0.0.0

I'm trying to upgrade EFCore 1.1 to EFCore 2.1

After a long journey of "Could not load assembly" and a bunch of NuGet updates, I'm facing what I think is the last wall before the accomplishment.

Could not load file or assembly 'System.ValueTuple, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

I've tried what I found there: 'System.ValueTuple, Version=0.0.0.0 required for Add-Migration on .NET 4.6.1 Class Library

No success.

On the official Git, they propose to add those line in the app.config:

No success either.

If I remove System.ValueTuple from the nuget packages, I have the exact same error.

It's like some dll, I don't know which one, is trying to load the ValueTuple from an unexisting location. I don't even know why it is looking for version 0.

At this point, I have no idea what to do. I've tried tons of stuff I found on the internet, but I'm facing a deadend.

Any help is appreciated.

Targeted Framework: 4.7

EFCore version: 2.1

EFCore packages: Core, Abstractions, Analyzers, Design, InMemory (for test solution), Relational, SqlServer, Tools

System.ValueTuple: 4.4.0

.NetStandard: 2.0.3