繁体   English   中英

无法从“无效”转换为“ System.Collections.Generic.List” <string> C#

[英]cannot convert from 'void' to 'System.Collections.Generic.List<string> C#

我正在尝试将以下代码中的每个循环的新列表添加到字典中,但是我目前正遇到以下错误:

无法从“无效”转换为“ System.Collections.Generic.List”

public class WeaponGen{
Dictionary<string, List<string>> weapons = new Dictionary <string, List<string>>(); 

public void WeaponGeneration(int GenerationCount)
{
    Weapon weapon = new Weapon(); //this class contains basic calculation methods
    weapons.Clear();

    for (int i = 0; i < GenerationCount; i++)
    {
        string listname = "weapon" + i;
        string id = Random.Range(1, 41).ToString();

        List<string>[] _lists = new List<string>[GenerationCount];
        _lists[i] = new List<string>();

        weapons.Add(listname, _lists[i].Add(id)); //this line throws an error
        weapons.Add(listname, _lists[i].Add(weapon.GetName(id))); //this line throws an error
        weapons.Add(listname, _lists[i].Add(weapon.GetRarity(id))); //this line throws an error
        weapons.Add(listname, _lists[i].Add(weapon.GetType(id))); //this line throws an error
        weapons.Add(listname, _lists[i].Add(weapon.GetDmg(id).ToString())); //this line throws an error
        weapons.Add(listname, _lists[i].Add(weapon.GetSpeed(id).ToString())); //this line throws an error
        weapons.Add(listname, _lists[i].Add(weapon.GetCost(id).ToString())); //this line throws an error
    }
}}

由于某些方面确实缺乏我的编码技能,因此我认为对语言有更好了解的人可以为我提供帮助。 非常感谢您的帮助!

欢迎来到SO!

列表add方法不返回任何值: https : //docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.list-1.add?view=netframework-4.7.2

因此,如果我正确理解了您的想法,则需要用所需的值填充列表,并将其本身添加到字典中,如下所示:

for (int i = 0; i < GenerationCount; i++)
{
    string listname = "weapon" + i;
    string id = Random.Range(1, 41).ToString();

    List<string>[] _lists = new List<string>[GenerationCount];
    _lists[i] = new List<string>();

    _lists[i].Add(id); 
    _lists[i].Add(weapon.GetName(id)); 
    _lists[i].Add(weapon.GetRarity(id)); 
    _lists[i].Add(weapon.GetType(id)); 
    _lists[i].Add(weapon.GetDmg(id).ToString());
    _lists[i].Add(weapon.GetSpeed(id).ToString()); 
    _lists[i].Add(weapon.GetCost(id).ToString());
    weapons.Add(listname, _lists[i]);
}

PS什么是Random.Range 是某种扩展方法吗? 无论如何,在如此小的间隔内基于随机值生成id似乎很危险。 为什么不简单使用i.ToString()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM