我有一个需要列表或数组的方法。我不想为它创建重载,因为它不是一个简单的方法。所以我决定这样做:
$('#example').dataTable({
"infoCallback": function( settings, start, end, max, total, pre ) {
return "Showing " + start + " to " + end + " of " + total + " entries"
+ ((total !== max) ? " (filtered from " + max + " total entries)" : "");
}
});
我在客户端的 RoadNodes 有时在数组中,有时在列表中。因此,当客户端具有List时,我必须在列表上调用 ToArray()然后调用此方法,但这是不可接受的,因为它将项目复制到新数组。性能是一个大问题,所以我不想浪费任何时间。所以我该怎么做?
答案 0 :(得分:1)
如果您只是对此进行枚举,则只需将其更改为单个签名即可:
public float BoundingBox(IEnumerable<RoadNode> nodes)
如果您需要列表和数组的索引行为,可以将签名更改为:
public float BoundingBox(IList<RoadNode> nodes)
第一个可能更合乎需要,因为您可以编写如下代码:
public float BoundingBox(IEnumerable<RoadNode> nodes){
IList<RoadNode> list;
if (nodes is IList<RoadNode>) list = (IList<RoadNode>)nodes;
else list = nodes.ToList();
//Do Something with list
}