更改方法以使用Tuple返回两个字典

时间:2018-10-26 12:41:18

标签: c#

你好,我有一个返回

的方法
Dictionary<Text, List<string>>

我希望它返回两个字典

这是我的方法:

public static Dictionary<Text, List<string>> CotisationURSSAF(TnsPrimitiveSession primitiveSession, int _IndexEnCours, CTNSExercice _Exercice, bool isAjustee)
     {

         Dictionary<Text, List<string>> CotisationURSSAF = new Dictionary<Text, List<string>>();

         Dictionary<Text, List<string>> ElementsPrisEnCompte = new Dictionary<Text, List<string>>();

         return CotisationURSSAF;

       }

我尝试过使用 Tuple ,但是我仍然遇到我的代码错误的问题:

  public Tuple<Dictionary<Text, List<string>, Text, List<string>>, Dictionary<Dictionary<Text, List<string>, Text, List<string>>> CotisationURSSAF<Text, List<string>, Text, List<string>>((TnsPrimitiveSession primitiveSession, int _IndexEnCours, CTNSExercice _Exercice, bool isAjustee))
        {

         Dictionary<Text, List<string>> CotisationURSSAF = new Dictionary<Text, List<string>>();

         Dictionary<Text, List<string>> ElementsPrisEnCompte = new Dictionary<Text, List<string>>();

        return Tuple.Create(CotisationURSSAF, ElementsPrisEnCompte);

       }

5 个答案:

答案 0 :(得分:5)

有两种更好的方法来代替这个没人能理解的怪异的元组怪物:

  1. 使用具有两个属性的自定义类,两个属性均为Dictionary<Text, List<string>>
  2. 返回包含两个项目的数组:Dictionary<Text, List<string>>[]

public static Dictionary<Text, List<string>>[] CotisationURSSAF(TnsPrimitiveSession primitiveSession, int _IndexEnCours, CTNSExercice _Exercice, bool isAjustee)
{
     Dictionary<Text, List<string>> CotisationURSSAF = new Dictionary<Text, List<string>>();
     Dictionary<Text, List<string>> ElementsPrisEnCompte = new Dictionary<Text, List<string>>();
     return new[]{ CotisationURSSAF, ElementsPrisEnCompte };
}

您可以通过索引对其进行访问。

答案 1 :(得分:3)

Tuple<
      Dictionary<Text, List<string>>,
      Dictionary<Text, List<string>>
     >

随时删除换行符。

但是,如果很难创建,将很难阅读。也许您应该将它们放在自己的类中,以提高可读性。

答案 2 :(得分:3)

Bonjour,一种解决方案:返回Dictionary的数组,然后可以通过array [0]和array [1]进行访问

public static Dictionary<Text, List<string>>[] CotisationURSSAF(TnsPrimitiveSession primitiveSession, int _IndexEnCours, CTNSExercice _Exercice, bool isAjustee)
{
    var list = new List<Dictionary<Text, List<string>>>();    
    Dictionary<Text, List<string>> CotisationURSSAF = new Dictionary<Text, List<string>>();    
    Dictionary<Text, List<string>> ElementsPrisEnCompte = new Dictionary<Text, List<string>>();    
    list.Add(CotisationURSSAF);
    list.Add(ElementsPrisEnCompte);   
    return list.ToArray();       
}

答案 3 :(得分:0)

方法类型必须与您的返回类型匹配。您正在定义一个Dictionary,当Dictionary仅接受2时,它是4种通用数据类型。

元组是另一个接受两个(或更多)通用数据类型的构造。

所以您真正想做的是返回一个具有两个在方法中定义的字典的元组:

Tuple<Dictionary<Text, List<string>>, Dictionary<Text, List<string>>>

似乎您应该稍微研究一下泛型。

答案 4 :(得分:0)

我建议您上一堂课而不是元组。它使事情对于调用者而言更加明显。例如:

    public class ReturnModel
    {
        public Dictionary<Text, List<string>> CotisationURSSAF { get; set; }
        public Dictionary<Text, List<string>> ElementsPrisEnCompte { get; set; }

        public ReturnModel(Dictionary<Text, List<string>> cotisationURSSAF, Dictionary<Text, List<string>> elementsPrisEnCompte)
        {
            this.CotisationURSSAF = cotisationURSSAF;
            this.ElementsPrisEnCompte = elementsPrisEnCompte;
        }
    }

您的方法将返回此模型。 (将其重命名为您的业务案例)

快乐编码!