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

C#中能否将类实例存入数组及如何随机选取实例?

解决Hangman游戏随机选单词实例的问题

嘿,我来帮你搞定这个问题!你完全可以把WordToGuess类的实例直接存入数组或者列表里,这才是最直接也最符合你练习初衷的方式——之前用字符串ID映射的思路确实绕了弯路,还容易出错。

方法一:用数组存储实例(最直接)

你只需要把创建好的WordToGuess实例直接放进数组,然后用随机索引选取就行,代码示例如下:

// 先创建几个WordToGuess实例
WordToGuess duck = new WordToGuess();
duck.numberOfLetters = 4;
duck.theWord = "Duck";
duck.theLetters = new string[] { "d", "u", "c", "k" };
duck.difficulty = "easy";
duck.wordID = "e3";

WordToGuess cat = new WordToGuess();
cat.numberOfLetters = 3;
cat.theWord = "Cat";
cat.theLetters = new string[] { "c", "a", "t" };
cat.difficulty = "easy";
cat.wordID = "e1";

// 把实例存入数组
WordToGuess[] easyWords = new WordToGuess[] { duck, cat /* 这里继续加其他easy难度的实例 */ };

// 随机选取一个实例
Random rnd = new Random();
int randomIndex = rnd.Next(easyWords.Length);
WordToGuess selectedWord = easyWords[randomIndex];

这样你拿到的selectedWord就是随机选中的那个单词实例,直接用它的属性就行,不用再通过ID去匹配啦。

方法二:用List存储实例(更优雅灵活)

如果后续你可能需要动态添加/移除单词,用List<WordToGuess>会比数组更方便,而且初始化的时候可以用集合初始化器让代码更整洁:

// 直接用集合初始化器创建并填充List
List<WordToGuess> easyWordsList = new List<WordToGuess>
{
    new WordToGuess
    {
        numberOfLetters = 4,
        theWord = "Duck",
        theLetters = new string[] { "d", "u", "c", "k" },
        difficulty = "easy",
        wordID = "e3"
    },
    new WordToGuess
    {
        numberOfLetters = 3,
        theWord = "Cat",
        theLetters = new string[] { "c", "a", "t" },
        difficulty = "easy",
        wordID = "e1"
    }
    // 继续添加更多实例即可
};

// 随机选取
Random rnd = new Random();
WordToGuess selectedWord = easyWordsList[rnd.Next(easyWordsList.Count)];

进阶优化:给WordToGuess加构造函数

为了让创建实例的代码更简洁,你可以给WordToGuess类加一个带参数的构造函数,这样就不用逐个赋值属性了:

public class WordToGuess
{
    public int numberOfLetters { get; set; }
    public string theWord { get; set; }
    public string[] theLetters { get; set; }
    public string difficulty { get; set; }
    public string wordID { get; set; }

    // 带参数的构造函数
    public WordToGuess(int letterCount, string word, string[] letters, string diff, string id)
    {
        numberOfLetters = letterCount;
        theWord = word;
        theLetters = letters;
        difficulty = diff;
        wordID = id;
    }
}

之后创建实例就可以写成这样,清爽多了:

List<WordToGuess> easyWordsList = new List<WordToGuess>
{
    new WordToGuess(4, "Duck", new string[] {"d","u","c","k"}, "easy", "e3"),
    new WordToGuess(3, "Cat", new string[] {"c","a","t"}, "easy", "e1")
};

这种直接操作类实例的方式,既符合面向对象的编程思路,也避免了手动维护ID和实例映射的麻烦,完全贴合你练习C#的初衷哦!

内容的提问来源于stack exchange,提问作者scroll.mops

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:44:05