我想知道一种将类中的变量分配给另一个类中的列表的方法。我有以下代码所以
public class Names
{
public int ID { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
var playerNames = new List<Names>();
playerNames = getPlayerList(ref totalPlayers);
//??
}
}
totalPlayers
是来自另一段代码的用户输入整数。
getPlayerList
是代码的一部分,它要求用户输入一些名称,然后使用Name
循环将其分配给Names
类中的for
'。
到目前为止一切正常,我只想知道如何将Name
类的Names
中的变量分配到Main
中的列表。
现在我将所有变量分配给字符串,然后将这些字符串添加到列表中,但最终会产生大量浪费的代码。
string player1 = playerNames[0].Name, player2 = playerNames[1].Name;
// and so on
List<string> players = new List<string>();
players.Add(player1);
players.Add(player2); // and so on
提前致谢。
答案 0 :(得分:1)
您可以使用LINQ创建列表:
static void Main(string[] args) {
var players = getPlayerList(ref totalPlayers);
var playerNames = players.Select(p => p.Name).ToList();
}
否则你会遍历List
:
static void Main(string[] args) {
var players = getPlayerList(ref totalPlayers);
var playerNames = new List<string>();
foreach (var p in players)
playerNames.Add(p.Name);
}
答案 1 :(得分:0)
您可以使用循环来遍历列表。
Range("C2:C900").FormulaR1C1 = _
"=VLOOKUP(RC[-2]&RC[-1],'[Gross.xlsb]dados'!C39:C40,2,0)"
然而,在NetMage已经指出的情况下,使用static void Main( string[] args )
{
var playerNames = new List<Names>();
//I assume that getPlayerList() is a function that will populate your list with objects of type Names
playerNames = getPlayerList( ref totalPlayers );
//you can iterate through the entire list of objects and retrieve whatever properties you need
foreach ( var p in players )
{
Console.WriteLine( "Id " + p.Id );
Console.WriteLine( "Name " + p.Name );
}
//Or create just a list of names using the Name property on 'Names'
var listOfNames = new list<string>();
foreach ( var p in players )
{
//and populate using the Name property from each 'Names' item
//in your list
listOfNames.add( p.Name );
}
//This Will print the first index in the list
Console.WriteLine( listOfNames[0] );
}
会更加清晰。
当你说
时getPlayerList是一段代码,它要求用户输入 一些名称,然后分配给“名称”类中的“名称” 使用for循环。
为什么不使用dictionary代替姓名列表呢?看起来您要做的就是将名称linq
与唯一身份(string)
一起存储。
(int)
然后你只需要遍历字典
Dictionary<int, string> playerNames = new Dictionary<int, string>();
playerNames,add( 0, "John Smith" );
playerNames,add( 1, "Wil Wheaton" );
playerNames,add( 2, "Jon Skeet" );
如果您发现自己拥有大量用户并且您知道他们的确切ID,那么字典将会更快地搜索 。