2011-11-09 101 views
1

這是我相當笨拙的解決方案:如何最好地複製數組的最後一個元素?

// Duplicate last element 
    { 
      List<PointF> t; 
      t = tiles.ToList(); 
      t.Add(tiles.LastOrDefault()); 
      tiles = t.ToArray(); 
    } 

奇怪的事實。新增不返回列表意味着一個語句被強制爲4。

什麼是更好的例如更簡潔的方式?謝謝。

+0

爲什麼不直接使用ArrayList的ENDCASE? – Gleeb

+0

@Gleeb:因爲是2011年? – Dyppl

+0

'LastOrDefault()'會在您的列表中添加'null'如果'tiles'爲空,則最好檢查'tiles.Any()'並使用'tiles.First()'如果它不爲空 – Dyppl

回答

3

我發現你的例子很難遵循...讓我知道如果這是有道理的。

var strings = new[] { "Item 1", "Item 2" }; 
strings = strings.Concat(new[] { strings.LastOrDefault() }).ToArray(); 

該示例獲取數組並複製最後一項。

在你的情況下,它看起來像tiles是一個PointF的數組。如果你想複製最後一個元素,所有你需要做的是:

tiles = tiles.Concat(new[] { tiles.LastOrDefault() }).ToArray(); 
+0

你跟着它很好 - 謝謝。 – ChrisJJ

1

這個怎麼樣?它會複製你的最後一個元素。 它涵蓋了一個空數組

ArrayList<PointF> t; 
t = tiles.toList(); 
if (t.size() ==0){ 
//something else or nothing 
}else{ 
t.add(new PointF(t.at(t.size()-1))); 
//i am not a C# programmer and i dont even have VS so it could be get() or something 
tiles = t.toArray(); 
} 
相關問題