如何在.NET Core 2.1中正确使用命名元组

时间:2018-12-17 13:29:24

标签: c# .net-core

我目前正在使用C#7+进行.NET core 2.1项目。我想使用命名元组作为我的方法的结果。我无法以某种方式正确创建方法返回参数。

到目前为止,我有:

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);
}

当我使用创建水果的方法时,我现在可以像这样使用苹果和橙子:

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中阅读了有关“命名元组”的内容,但是我不确定如何正确使用它们,尤其是对于复杂的数据类型。

您知道如何解决此问题吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

C#还支持以下内容,我认为它适合您想要做得更好的事情

   class TuppleExample
{
    public (Apple, Orange) GetAppleAndOrage()
    {
        var apple = new Apple();
        var orange = new Orange();
        return (apple, orange);
    }

    public void EatAppleAndOrange()
    {
        var (apple, orange) = this.GetAppleAndOrage();

        apple.Bite();
        orange.PeelThenBite();
    }
}
class Apple { }
class Orange { }

好处是您可以跳过.Item1.Item2语法,而直接按照声明它们的顺序访问元组变量。