C#方法重载问题,字符串[]转换

C#方法重载问题,字符串[]转换,c#,C#,我正试图让下面的工作如下。名称(某物)将某物添加到列表中。然后name()检索这些值。但我遇到了一些问题,希望你们中的一个知道怎么回事 public class PlayerSettings { public List<string[]> Players = new List<string[]>(); public void Name(string input) { string[] addname = new string[1];

我正试图让下面的工作如下。名称(某物)将某物添加到列表中。然后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];
        }
    }
}

返回数组的元素但不返回数组,将
public string[]Name()
替换为
public string Name()


或者,如果您需要带有一个项目的数组,请使用
array.Resize(*params*)
如果您愿意返回字符串数组,则需要返回播放器而不是播放器[0]。

您可以尝试以下操作

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;
        }
    }
}
公共类玩家设置
{
公共列表玩家=新列表();
公共无效名称(字符串输入)
{
添加(输入);
}
公共IEnumerable名称()
{
foreach(播放器中的弦乐播放器)
{
退场球员;
}
}
}

播放器[0]
只是一个
字符串

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


所以只要返回Players.ToArray()
或其他什么。

你不能从一个方法中多次返回
。我不明白为什么内部列表是字符串数组的列表。我想你想要的是:

public class PlayerSettings
{
    public List<string> Players = new List<string>();
    public void Name(string input)
    {
        Players.Add(input);
    }
    public string[] Name()
    {
        return Players.ToArray();
    }
}
公共类玩家设置
{
公共列表玩家=新列表();
公共无效名称(字符串输入)
{
添加(输入);
}
公共字符串[]名称()
{
返回玩家。ToArray();
}
}
如果您的意思是希望Name()返回累积值,例如逗号分隔的字符串:

   public string Name()    {  return string.Join("," Players.Select(p=>p[0]));    }
如果它应返回包含所有第一个值的列表:

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

此代码满足您的要求:

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

    public IEnumerable<string> Name()
    {
        return Players;
    }
}
公共类玩家设置
{
公共列表玩家=新列表();
公共无效名称(字符串输入)
{
添加(输入);
}
公共IEnumerable名称()
{
返回球员;
}
}
然而,我确信那不是你想要的


想想你真正想要你的代码做什么,特别是为什么你的代码中有一个
列表。

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

另外,我不认为在
列表中使用
字符串[]
有什么意义,因为您只是插入一个字符串并检索相同的字符串

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

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);
    }
}

您可以编写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();
    }
}

公共类玩家设置
{
私人名单玩家=新名单();
公共无效名称(字符串输入)
{`在这里输入代码`
string[]addname=新字符串[1];
addname[0]=输入;
Players.Add(addname);
}
公共字符串[]名称()
{
列表结果=新列表();
foreach(玩家中的字符串[]玩家)
{
结果。添加范围(玩家);
}
返回result.ToArray();
}
}

问题出在哪里..?您希望在方法名称中返回什么?虽然要修复错误,您需要“returnnewstring[]{Player[0]};”,但这段代码没有意义。您需要告诉我们您遇到了什么问题(除了对数组的奇怪崇拜-我根本看不出数组出现在这段代码中的原因)我希望返回我添加到播放器列表中的值。我相信@user1511385希望使用
Name(“foo”)
将名称添加到播放器设置列表(
string[]
),并使用
Name()
获取名称列表。显然,他希望返回一个名称数组,不是播放器设置数组。谢谢,这正是我想要的,只是我在调用Name()时希望将所有的值连接在一起,但我相信我自己可以做到。你应该接受其中一个最佳答案。最能帮助你理解的一个。+1代表一个有创意的名字。同样,当你通过心灵感应发现OP想要将这些值连接起来时。(他在评论纳克维塔拉的回答时这样说)。
 public string Name(int index)
    {
        if (index >= 0 && index < Players.Count())
            return Players.ElementAt(index);
        else
            return null;
    }
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();
    }
}