我正在尝试将此代码转换为C#,并且想知道Javascript的“Array.push”等同于什么? 这是我正在转换的几行代码:
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
}
}
答案 0 :(得分: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功能将其转换为单行,并避免编写所有这些命令性循环。
这就是说,当将源代码从一种语言转换为另一种语言时,不仅仅是简单地搜索等效数据类型等等......您还可以利用目标语言提供的功能。
答案 1 :(得分:4)
答案 2 :(得分:2)
在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世界中字面翻译可能如此不自然和丑陋,你将不得不保持这种丑陋......我们不希望你处于这个位置:)