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
相关产品推荐
相关产品推荐

