-1

我试图让下面的工作如下。name(something) 将某些内容添加到列表中。然后 name() 检索值。但是我遇到了一些问题,希望你们中的一个人知道发生了什么。

public class PlayerSettings
{
    public List<string[]> Players = new List<string[]>();
    public void Name(string input)
    {
        string[] addname = new string[1];
        addname[0] = input;
        Players.Add(addname);
    }
    public string[] Name()
    {
        foreach (string[] Player in Players)
        {
            return Player[0];
        }
    }
}

在下面的行中无法将类型字符串隐式转换为字符串 [] 错误。

return Player[0];
4

9 回答 9

1

你返回数组的元素而不是数组,替换public string[] Name()public string Name()

或者如果您需要使用一项的数组Array.Resize(*params*)

于 2012-07-09T08:28:39.060 回答
1

你可以尝试类似的东西

public class PlayerSettings
{
    public List<String> Players = new List<String>();
    public void Name(String input)
    {
        Players.Add(input);
    }
    public IEnumerable<String> Names()
    {
        foreach (string Player in Players)
        {
            yield return Player;
        }
    }
}
于 2012-07-09T08:29:23.100 回答
1

如果您的意思是您希望 Name() 返回一个累积值,例如逗号分隔的字符串:

   public string Name()    {  return string.Join("," Players.Select(p=>p[0]));    }

如果它应该返回一个包含所有第一个值的列表:

   public string[] Name()    {  return Players.Select(p=>p[0]).ToArray();    }
于 2012-07-09T08:30:10.313 回答
1

这段代码可以满足您的要求:

public class PlayerSettings
{
    public List<string> Players = new List<string>();
    public void Name(string input)
    {
        Players.Add(input);
    }

    public IEnumerable<string> Name()
    {
        return Players;
    }
}

但是,我确定这不是您想要的。

想想你真正想要你的代码做什么,特别是为什么你List<string[]>的代码中有一个。

于 2012-07-09T08:31:07.313 回答
0

如果您愿意返回字符串数组,则需要返回 Player 而不是 Player[0]。

于 2012-07-09T08:29:05.723 回答
0

Player[0]只是一个string

但是您的方法定义说您正在返回一个字符串数组(string[]

所以只是返回Players.ToArray()什么的。

于 2012-07-09T08:29:27.863 回答
0

您不能return多次使用一种方法。而且我不明白为什么内部列表是字符串数组的列表。我想你想要这样的东西:

public class PlayerSettings
{
    public List<string> Players = new List<string>();
    public void Name(string input)
    {
        Players.Add(input);
    }
    public string[] Name()
    {
        return Players.ToArray();
    }
}
于 2012-07-09T08:29:40.573 回答
0

首先Player[0]不是类型string[],它只是一个字符串。因此,第二个的返回类型Name()应该是stringand not string[]

另外,我看不出使用string[]inside a的意义,List<>因为您只是插入一个字符串并检索它!

我认为这个修改后的代码应该对你有好处:

public class PlayerSettings
{
    public List<string> Players = new List<string>();
    public void Name(string input)
    {
        Players.Add(input);
    }
    public string Name()
    {
       return Players.ElementAt(0);
    }
}

第一个重载 forName()会将字符串添加到列表中,而第二个重载将返回添加的第一个字符串。您还可以Name()根据索引返回另一个,例如:

 public string Name(int index)
    {
        if (index >= 0 && index < Players.Count())
            return Players.ElementAt(index);
        else
            return null;
    }
于 2012-07-09T08:41:10.877 回答
0

您可以编写您的 playersettings 类,如:

public class PlayerSettings
{
    private List<string[]> Players = new List<string[]>();
    public void Name(string input)
    {`enter code here`
        string[] addname = new string[1];
        addname[0] = input;
        Players.Add(addname);
    }
    public string[] Name()
    {
        List<string> result = new List<string>();
        foreach (string[] Player in Players)
        {
            result.AddRange(Player);
        }
        return result.ToArray();
    }
}
于 2012-07-09T08:41:12.033 回答