【问题标题】:Returning an array of multiple arrays返回多个数组的数组
【发布时间】:2021-08-14 11:33:33
【问题描述】:

我真的不知道这是否是正确的方法,但我想返回一个数组数组以便稍后在另一个函数中调用它的元素。

 static Values RetrieveXML(string XMLFile)
 {

        using var reader = XmlReader.Create(XMLFile);

        reader.ReadToFollowing("ticket");

        reader.ReadToFollowing("lignes");
        string nombre = reader.GetAttribute("nombre");
        int ligne = int.Parse(nombre);

        Values[] _Values = new Values[ligne];

        for(int i=0; i<ligne; i++){

        _Values[i] = new Values();

            reader.ReadToFollowing("article");
            _Values[i].code = reader.GetAttribute("code");

            _Values[i].qty = reader.GetAttribute("quantite");

            _Values[i].net_price = reader.GetAttribute("net");

            _Values[i].net_ht_price = reader.GetAttribute("net_ht");

            _Values[i].tva = reader.GetAttribute("taxes");

            _Values[i].num = reader.GetAttribute("numero");

            _Values[i].valeur = reader.GetAttribute("base_ht");

            _Values[i].remise = reader.GetAttribute("valeur_remise");

            reader.ReadToFollowing("libelle");
            _Values[i].libelle = reader.ReadElementContentAsString();

            Console.WriteLine("-----------Using XMLToOrderLine--------------");
            Console.WriteLine(_Values[i].code);
            Console.WriteLine(_Values[i].valeur);
        }

   return _Values[];
}

public class Values
{
    public string code;
    public string qty;
    public string remise;
    public string valeur;
    public string tva;
    public string libelle;
    public string num; 
    public string net_ht_price;
    public string net_price; 
}

然后我想通过示例调用:Values[1].code 在另一个函数中,我该怎么做?

【问题讨论】:

  • “如果这是正确的方法” - 它有效吗?是否可以无错误地编译?
  • 将定义改为:static Values[] RetrieveXML(string XMLFile) 然后返回 return _Values; (没有数组)。
  • 需要考虑的其他事项是该合同更改的可能性有多大?您是否需要考虑使其更通用,以便在进行这些更改的情况下仍能正常工作?
  • 哦,是的,我的错谢谢@jdweng​​span>
  • 恕我直言,值对于该类来说是一个坏名字,并且在这种情况下增加了它所代表的混淆。值(单数)应该更好。即使那样它也不会告诉你它的对象是什么。也许是“文章”。这显然与您的问题无关,但有助于澄清。

标签: c# arrays xml function multidimensional-array


【解决方案1】:

像这样更改您的代码:

static Values[] RetrieveXML(string XMLFile)
 {

        using var reader = XmlReader.Create(XMLFile);

        reader.ReadToFollowing("ticket");

        reader.ReadToFollowing("lignes");
        string nombre = reader.GetAttribute("nombre");
        int ligne = int.Parse(nombre);

        Values[] _Values = new Values[ligne];

        for(int i=0; i<ligne; i++){

        _Values[i] = new Values();

            reader.ReadToFollowing("article");
            _Values[i].code = reader.GetAttribute("code");

            _Values[i].qty = reader.GetAttribute("quantite");

            _Values[i].net_price = reader.GetAttribute("net");

            _Values[i].net_ht_price = reader.GetAttribute("net_ht");

            _Values[i].tva = reader.GetAttribute("taxes");

            _Values[i].num = reader.GetAttribute("numero");

            _Values[i].valeur = reader.GetAttribute("base_ht");

            _Values[i].remise = reader.GetAttribute("valeur_remise");

            reader.ReadToFollowing("libelle");
            _Values[i].libelle = reader.ReadElementContentAsString();

            Console.WriteLine("-----------Using XMLToOrderLine--------------");
            Console.WriteLine(_Values[i].code);
            Console.WriteLine(_Values[i].valeur);
        }

   return _Values;
}

试试吧。

【讨论】:

  • 请解释一下你在上面的代码中做了什么改动,以便所有人都能理解这些改动。
  • 好的,谢谢 BigDream,它是这样工作的,我只需将“static Values RetrieveXML(string XMLFile)”更改为“static Values[] RetrieveXML(string XMLFile)”和“return _Values[]; "进入“返回_Values;”
猜你喜欢
  • 2013-06-12
  • 2019-03-17
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
相关资源
最近更新 更多