You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何返回自定义Values类数组并在其他函数中调用元素属性

需要修改的核心问题

  • 方法返回值类型错误:原方法定义的返回值是单个Values对象,你需要返回数组,所以要把方法签名改为static Values[] RetrieveXML(string XMLFile)
  • 返回语句语法错误:原代码return _Values[];是错误写法,直接返回数组变量名即可,改为return _Values;

可选优化(推荐补充)

  • 可以使用int.TryParse替换int.Parse,避免XML中nombre属性值非法时抛出未处理异常
  • 每次调用GetAttribute后可以增加空值判断,避免XML节点缺失属性时赋值为null带来后续调用风险
  • 可以判断ReadToFollowing的返回值,避免XML节点缺失时后续逻辑出错

修改后完整代码

static Values[] RetrieveXML(string XMLFile)
{
    using var reader = XmlReader.Create(XMLFile);

    reader.ReadToFollowing("ticket");
    reader.ReadToFollowing("lignes");
    string nombre = reader.GetAttribute("nombre");
    // 这里也可以换成int.TryParse做更安全的类型转换
    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[] resultArr = RetrieveXML("你的XML文件路径");
// 按照你需要的形式读取属性,数组下标从0开始
var targetCode = resultArr[1].code;

内容的提问来源于stack exchange,提问作者Gbn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 21:24:04