gpt4 book ai didi

c# - 动态创建对象并添加到列表

转载 作者:行者123 更新时间:2023-12-02 05:04:13 25 4
gpt4 key购买 nike

我想使用一种方法来创建 Adventurer 的实例然后将其添加到 List<Adventurer> .一个 for 循环将创建 20 个 Adventurer 的实例.我试图避免使用构造函数,因为在这条路上我将有相当多的值要传递。如果我尝试做的事情不可能,我将不得不恢复使用构造函数。

我需要这个方法来创建 Adventurer 的新实例并赋值 randomGender , randomClass , 和 name给它。在这一点上,我不知道如何。此外,我无法创建新实例并手动命名它,因为此方法将被调用多次。

    public static Adventurer createAdventurer()
{
Array valuesGender = Enum.GetValues(typeof(AdventurerGender));
AdventurerGender randomGender = (AdventurerGender)valuesGender.GetValue(rand.Next(valuesGender.Length));

Array valuesClass = Enum.GetValues(typeof(AdventurerClass));
AdventurerClass randomClass = (AdventurerClass)valuesClass.GetValue(rand.Next(valuesClass.Length));

string name = "Test " + AdventurerManager.AvaliableAdvList.Count.ToString();

return new Adventurer();
}

这是我的 for 循环:

        for (int i = 0; i < 20; i++)
{
AdventurerManager.AvaliableAdvList.Add(AdventurerManager.createAdventurer());
}

所以我的问题是...在createAdventurer是否可以为 Adventurer 的新实例赋值?无需手动声明,也无需使用构造函数?或者在以后的某个地方使用一个很长的构造函数会更容易吗?

最佳答案

您似乎在寻找私有(private)构造函数。在那里进行所有分配,并从静态工厂方法调用私有(private)构造函数。

public static Adventurer createAdventurer()
{
return new Adventurer();
}

private Adventurer()
{
Array valuesGender = Enum.GetValues(typeof(AdventurerGender));
AdventurerGender randomGender = (AdventurerGender)valuesGender.GetValue(rand.Next(valuesGender.Length));

Array valuesClass = Enum.GetValues(typeof(AdventurerClass));
AdventurerClass randomClass = (AdventurerClass)valuesClass.GetValue(rand.Next(valuesClass.Length));

string name = "Test " + AdventurerManager.AvaliableAdvList.Count.ToString();

// TODO assign member values here
}

关于c# - 动态创建对象并添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16533080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com