2010-09-19 116 views
4

我想這個代碼在轉換爲C#,想知道什麼是等同於JavaScript的「的Array.push」? 下面的代碼我正在轉換的幾行:C#相當於爲Javascript「推」

var macroInit1, macroInit2; 
    var macroSteps = new Array(); 
    var i, step; 

    macroInit1 = "Random String"; 
    macroInit2 = "Random String two"; 
    macroSteps.push(macroInit1 + "another random string"); 
    macroSteps.push(macroInit2 + "The last random string"); 

for (i=0; i<10; i++) 
{ 
    for (step = 0; step < macroSteps.length; step++) 
    { 
    // Do some stuff 
     } 
    } 

回答

9

你可以使用一個List<string>

var macroInit1 = "Random String"; 
var macroInit2 = "Random String two"; 
var macroSteps = new List<string>(); 
macroSteps.Add(macroInit1 + "another random string"); 
macroSteps.Add(macroInit2 + "The last random string"); 
for (int i = 0; i < 10; i++) 
{ 
    for (int step = 0; step < macroSteps.Count; step++) 
    { 

    } 
} 

當然這個代碼在C#中極爲難看。根據你所進行的這些字符串操作,你可以利用內置到C#的LINQ功能優勢,將其轉化成一個班輪和避免編寫所有必要的循環。

這是說,從一種語言轉換的源代碼到另一個時,它不是簡單地尋找等價數據類型,等等問題......你也可以好好利用一下目標語言所提供的。

3

您可以替換或者與

  • List<string> macroSteps的類型安全列表的字符串

  • ArrayList macroSteps。一個靈活的對象列表中,
+0

並使用.Add你在哪裏, d使用推() – 2010-09-19 11:51:34

1

它可以更乾淨,聲明和在C#不錯,例如:

//In .NET both lists and arraus implement IList interface, so we don't care what's behind 
//A parameter is just a sequence, again, we just enumerate through 
//and don't care if you put array or list or whatever, any enumerable 
public static IList<string> GenerateMacroStuff(IEnumerable<string> macroInits) { 
{ 
    return macroInits 
       .Select(x => x + "some random string or function returns that") //your re-initialization 
       .Select(x => YourDoSomeStuff(x)) //what you had in your foreach 
       .ToArray(); 
} 

,它可以再使用:

var myInits = new[] {"Some init value", "Some init value 2", "Another Value 3"}; 
var myMacroStuff = GetMacroStuff(myInits); //here is an array of what we need 

順便說一句,我們可以建議你解決如何「做的東西」正確,很好,如果你只是描述你想要什麼,而不是僅僅告訴我們,我們沒有任何線索,如何使用,詢問如何將它字面翻譯代碼。 由於直譯在.NET世界中可能會如此不自然和醜陋,並且您將不得不保持這種醜陋...我們不希望您處於這個位置:)

+0

+1的LINQ(儘管它可能超出OP的現有知識):記住,你可以使用'。選擇(YourDoSomeStuff)的''代替。選擇(X => YourDoSomeStuff(X))' – 2010-09-19 14:02:03

+0

是的,我記得。但是,如果你在LINQ是新的可能很難理解。選擇(DoSomeStuff)實際上是一個方法組。 – 2010-09-20 10:41:47