2015-11-03 62 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