2015-11-03 74 views
-2

前段时间我在vb.net创建了一个查询游戏服务器的程序。我正在使用为查询阀服务器而创建的参考。无论如何,这是VB代码。它在VB中完美工作。从vb到c的循环转换#

For Each player As aQueryLib.aQueryLib.Player In Server.Players 
    lstPlayers.AddItem(player.Name) 
Next 

我在C#中创建一个新程序,但我不能为我的生活复制上面的循环。它基本上将服务器的玩家添加到列表中。

如何在C#2010中执行此循环?

+3

你有没有在C#抬头循环? https://msdn.microsoft.com/en-us/library/ms228598.aspx – David

+0

甚至去像一个vb -c#代码转换器像telerik? –

回答

7

你可以尝试作为简单的东西:

foreach(var player in Server.Players) 
{ 
    lstPlayers.Add(player.Name); 
} 

,或者如果你想使用LINQ的:

var lstPlayers = Server.Players 
         .Select(player=>player.Name) 
         .ToList(); 

在理论上是的,但我需要使用aQueryLib.aQueryLib。否则球员我 不能拉名玩家

如果您关注var关键字,这只是语法糖。我们让编译器推断名为player的变量的类型,而不需要指定哪个是这个变量的确切类型。欲了解更多关于var的信息,请看看here

+0

理论上是的,但我需要使用aQueryLib.aQueryLib.Player,否则我不能拉出玩家的名字。 – Patrick

+0

@帕特里克理论上你的意思是什么?什么是“Server.Players”?我想这是一个对象的集合?这些对象的类型是什么?我假设他们都有一个名为'Name'的属性。如果以上都不是这样,那么我的答案肯定不是解决您的问题的方法。但是,这是我可以从您的代码推断。如果你能提供更多的信息,我肯定会变得更有帮助。谢谢 – Christos

+0

@Christos我认为OP的印象是'var'与'foreach'中的'object'相同。无论如何+1 – MickyD

0

This link有点过时(它没有所有最新的语言结构),但是当我需要弄清楚如何做相反的事情时,我发现它很有用:在VB.NET中,我知道大多数C#不要。在特定的问题的情况下,相当于在VB.NET:

' Array or collection looping 
Dim names As String() = {"Fred", "Sue", "Barney"} 
For Each s As String In names 
    Console.WriteLine(s) 
Next 

与C#:

// Array or collection looping 
string[] names = {"Fred", "Sue", "Barney"}; 
foreach (string s in names) 
    Console.WriteLine(s); 
1
foreach(aQueryLib.aQueryLib.Player player in Server.Players) 
{ 
    lstPlayers.AddItem(player.Name); 
} 
+0

谢谢。这正是我期待的。我倒退了。 – Patrick

+0

@帕特里克很高兴我能尽快帮忙,不客气 – MethodMan