Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存增量值的最佳数据结构?_C#_Data Structures - Fatal编程技术网

C# 保存增量值的最佳数据结构?

C# 保存增量值的最佳数据结构?,c#,data-structures,C#,Data Structures,我必须创建一个函数,返回角色的拼写 所以我有3个参数:一个级别(1-50的整数)、一个表示字符类的枚举(只有8个类)和一个表示种族的枚举(3-4个种族) 此函数必须返回带有拼写ID的数组。等级越高,角色的法术越多 到目前为止,我所做的一切都是硬编码的,但当我不得不修改某些东西时,一切都一团糟。我不知道什么样的数据结构最适合我的需要,而不会重复使用难以更改的可怕的ifs/mantain 另外,语言是C#,我使用的是Xna/.net4.0 更新 我不知道什么样的数据结构最适合我的需要,而不会重复出现

我必须创建一个函数,返回角色的拼写

所以我有3个参数:一个级别(1-50的整数)、一个表示字符类的枚举(只有8个类)和一个表示种族的枚举(3-4个种族)

此函数必须返回带有拼写ID的数组。等级越高,角色的法术越多

到目前为止,我所做的一切都是硬编码的,但当我不得不修改某些东西时,一切都一团糟。我不知道什么样的数据结构最适合我的需要,而不会重复使用难以更改的可怕的
if
s/mantain

另外,语言是C#,我使用的是Xna/.net4.0

更新 我不知道什么样的数据结构最适合我的需要,而不会重复出现可怕的问题 如果很难改变/保持

一个简单的平凡数组,在数据库中替代一个表

字段:

  • 拼写ID
  • 性格
  • 阶级
  • 水平仪
  • 描述布拉布拉布拉布拉
然后根据匹配条件进行过滤


我建议不要返回数组,这是没有用的。将该方法设为IEnumerable,然后您可以根据需要排列它,或者直接运行它。

如果您确实需要,则可以创建数据库。现在,您可以使用
IEnumerable
/
数组
,但数据库将为您提供未来游戏所需的灵活性。

您可以提供任何示例吗?这就是我目前为止所做的:在不考虑角色级别的情况下,如果作为参数传递的级别更高,角色将有更多的拼写,你可以从
IEnumerable
返回方法中返回数据,这是一个经常被忽略的特性。我所说的“make the method IEnumerable”就是这个意思,你只需要在实际需要时创建一个数组,通常你可能不需要。
public static int[] ListOfSpells(int level, CharacterClass chClass, CharacterRace chRace)
{
    switch (chClass)
    {
        case CharacterClass.Mage:
            return new int[] { 1, 2, 3 };
        case CharacterClass.Knight:
            return new int[] { 2, 5, 6 };
        case CharacterClass.Paladin:
            return new int[] { 3, 5, 6, 2 };
        default:
            return new int[] { };
    }
}
 
// classes
 
public enum CharacterClass : short
{
    Mage = 0x00,
    Warlock,
    Priest,
 
    Monk,
    Knight,
    Assassin,
 
    Paladin,
    Hunter,
    Warrior
}
 
// races
 
public enum CharacterRace : short
{
    Human = 0x00,
    Elf
}