【发布时间】:2018-12-17 13:29:23
【问题描述】:
我目前正在使用 C# 7+ 开发 .NET core 2.1 项目。我想使用命名 Tuple 作为我的方法的结果。不知何故,我无法正确创建方法返回参数。
到目前为止我有:
public static Tuple<List<Dictionary<string, object>>, List<KeyValuePair<int, Dictionary<string, float>>>> CreateFruits()
{
// logic to create apples and oranges
return new Tuple<List<Dictionary<string, object>>, List<KeyValuePair<int, Dictionary<string, float>>>>(apples, oranges);
}
当我使用我的方法 Create Fruits 时,我目前可以像这样使用 Apples 和 Oranges:
var result = MyHelper.CreateFruits();
var apples = result.Item1;
var oranges = result.Item2;
我想使用 Apple 和 Orange 之类的东西,而不是 Item1 和 Item2。
var result = MyHelper.CreateFruits();
var apples = result.Apple;
var oranges = result.Orange;
真的有可能吗,我读过一些关于 C# 7 中命名元组的内容,但我不太确定如何正确使用它们,尤其是对于复杂的数据类型。
你知道如何解决这个问题吗?
非常感谢!
【问题讨论】:
-
您的代码没有使用新的元组。应该是
(List<Dictionary<string, object>> apple, List<KeyValuePair<int, Dictionary<string, float>> orange)。但是,这不会使这段代码更易于阅读和使用 - 为什么返回此类列表和字典而不是强类型对象? -
来自雷曼
Please check link. https://docs.microsoft.com/en-us/dotnet/csharp/tuples I think you are missing refrence : (Apples: apple, Orange: orange) -
谢谢!数据类型用于解析非强类型消息。很遗憾,我无法改变。
-
命名元组无济于事。您应该重构返回值类型。我已经感受到了开发者的痛苦,他们会支持这段代码。我怀疑即使是你也会记得,几周后第二个
KVP列表中的int是什么意思。