我的代码很长,我不太理解,请帮助将代码分解为更简单的语句

时间:2019-01-18 22:34:08

标签: c#

以下方法是否做同样的事情?我试图将第一种方法中的语句分解为多个语句,以供我理解。

TextureManager::Instance()->load(pParams->getFileName(), m_textureID, TheGame::Instance()->getRenderer());

还有public static Actions KeysUp(this Actions actions, params string[] keys) { keys.ToList().ForEach(k => actions.KeyUp(k)); return actions; } 函数:

KeysUp

1 个答案:

答案 0 :(得分:0)

效率很低,我不知道您的类型。我猜他们是字符,如果我猜错了,可以用其他类型替换它们。

// keys.ToList() means
List<char> temp = new List<char>();

foreach (char k in keys)
{
  temp.Add(k);
}

// .ForEach(k => actions.KeyUp(k)) means (in context of your temporary list)
foreach (char k in temp)
{
  actions.KeyUp(k);
}

因此,对于键中的每个键,都会调用一次action对象的KeyUp方法。

创建该临时列表的原因是ForEach方法在List上,但不是IEnumerable。要回答我的上一句话无疑会引起您的疑问,请参阅here

获得完全相同的结果(减去不必要的垃圾收集和延迟)的更有效的方法(CPU /内存,时间)将是

foreach (var k in keys) 
{ 
  actions.KeyUp(k); 
}

,或者如果您更喜欢一行,则:

foreach (var k in keys) { actions.KeyUp(k); }