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

C#中如何在一个类中使用另一个类方法返回的数组

C#调用返回数组方法的正确实现方式

你的核心问题是调用generate_random()方法时,没有声明对应类型的变量接收方法的返回值,导致后续逻辑无法访问生成的随机卡牌ID数组。另外现有代码还存在两个会触发编译错误/维护性差的问题:

  • HandGeneration方法已经定义了int a入参,方法内部重复声明同名int a变量,会报重复定义编译错误
  • for循环硬编码长度为2,后续调整随机生成卡牌数量时需要同步修改循环条件,容易漏改出bug

修正后的实现代码

直接修改c_Hand类的HandGeneration方法即可:

class c_Hand
{
    // ATTRIBUTES
    int nbr_in_hand;

    // METHODS
    public void HandGeneration(int a)
    {
        // 删除重复定义的int a; 避免重复声明编译错误
        c_ConnectionMySQL countCards = new c_ConnectionMySQL();
        countCards.count_cards_DB();

        c_card hand = new c_card();
        c_random rnd = new c_random();

        // 核心修改:声明int[]类型变量,接收generate_random方法返回的数组
        int[] randomCardIds = rnd.generate_random();

        // 循环条件使用数组自带的Length属性,自动适配生成的卡牌数量
        for (int i = 0; i < randomCardIds.Length; i++)
        {
            // 通过索引直接获取当前位置的卡牌ID
            int targetCardId = randomCardIds[i];
            // 在此处补充你的卡牌生成逻辑,将targetCardId传入对应方法即可
        }
    }
}

额外优化建议

  • 当前你在generate_random方法和HandGeneration方法中重复创建数据库连接、重复调用count_cards_DB()查询卡牌总数,属于冗余逻辑,可以只查询一次总数后透传给需要的逻辑,减少不必要的数据库IO开销
  • C#编码规范约定类名、方法名使用大驼峰(帕斯卡命名法),比如将c_random改为RandomGenerator、HandGeneration改为GenerateHand,长期维护时可读性更好,该调整不影响功能运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:21:38