C# 4.0 如何最好地复制数组的最后一个元素?
以下是我相当笨拙的解决方案:C# 4.0 如何最好地复制数组的最后一个元素?,c#-4.0,C# 4.0,以下是我相当笨拙的解决方案: // Duplicate last element { List<PointF> t; t = tiles.ToList(); t.Add(tiles.LastOrDefault()); tiles = t.ToArray(); } //重复最后一个元素 { 列表t; t=tiles.ToList(); t、 添加(tiles.LastOrD
// Duplicate last element
{
List<PointF> t;
t = tiles.ToList();
t.Add(tiles.LastOrDefault());
tiles = t.ToArray();
}
//重复最后一个元素
{
列表t;
t=tiles.ToList();
t、 添加(tiles.LastOrDefault());
tiles=t.ToArray();
}
奇怪的是.Add没有返回列表,这意味着一条语句必须是四条
哪种方式更好,例如更简洁?谢谢。我发现你的例子很难理解。。。让我知道这是否有意义
var strings = new[] { "Item 1", "Item 2" };
strings = strings.Concat(new[] { strings.LastOrDefault() }).ToArray();
此示例获取一个数组并复制最后一项
在您的例子中,它看起来像是tiles
是一个点f
的数组。如果要复制最后一个元素,只需执行以下操作:
tiles = tiles.Concat(new[] { tiles.LastOrDefault() }).ToArray();
我发现你的例子很难理解。。。让我知道这是否有意义
var strings = new[] { "Item 1", "Item 2" };
strings = strings.Concat(new[] { strings.LastOrDefault() }).ToArray();
此示例获取一个数组并复制最后一项
在您的例子中,它看起来像是tiles
是一个点f
的数组。如果要复制最后一个元素,只需执行以下操作:
tiles = tiles.Concat(new[] { tiles.LastOrDefault() }).ToArray();
这个怎么样?
它将复制您的最后一个元素。
它覆盖了空数组的结尾
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();
}
arraylistt;
t=tiles.toList();
如果(t.size()==0){
//要么别的什么,要么什么都没有
}否则{
t、 添加(新的点f(t.at(t.size()-1)));
//我不是一个C#程序员,我甚至没有VS,所以可能是get()之类的
tiles=t.toArray();
}
这个怎么样?
它将复制您的最后一个元素。
它覆盖了空数组的结尾
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();
}
arraylistt;
t=tiles.toList();
如果(t.size()==0){
//要么别的什么,要么什么都没有
}否则{
t、 添加(新的点f(t.at(t.size()-1)));
//我不是一个C#程序员,我甚至没有VS,所以可能是get()之类的
tiles=t.toArray();
}
为什么不直接使用Arraylist?LastOrDefault()
会将null
添加到列表中如果tiles
为空,最好只检查tiles.Any()
并使用tiles.First()
如果不是空的,我没有注意到PointF
是一个结构,因此,FirstOrDefault
会将(0;0)添加到数组中,如果它是空的,这是所需的逻辑吗?@Dyppl:对不起,我不支持2011?。它的年份或版本会有什么不同?@Gleeb:在瞄准.NET 2.0或更高版本时,没有理由使用ArrayList
。通用集合(即列表
)提供相同的功能,同时提供类型安全性和改进的性能。MSDN关于ArrayList
的文章并没有说它已经过时或不推荐使用,但实际上是这样的:除非您以.NET 1.1为目标,否则将ArrayList
用于新代码没有任何意义,List
对于几乎任何用例来说都更好。所以我的意思是“现在是2011年,带泛型的.NET 2.0已经存在了五年了”。为什么不直接使用Arraylist呢?LastOrDefault()
将null
添加到列表中如果tiles
为空,最好只检查tiles.Any()
并使用tiles.First()
如果实际上不是空的,我没有注意到PointF
是一个结构,因此FirstOrDefault
会将(0;0)添加到数组中,如果它是空的,这是所需的逻辑吗?@Dyppl:抱歉,我没有遵循2011?。它的年份或版本会有什么不同?@Gleeb:在瞄准.NET 2.0或更高版本时,没有理由使用ArrayList
。通用集合(即列表
)提供相同的功能,同时提供类型安全性和改进的性能。MSDN关于ArrayList
的文章并没有说它已经过时或不推荐使用,但实际上是这样的:除非您以.NET 1.1为目标,否则将ArrayList
用于新代码没有任何意义,List
对于几乎任何用例来说都更好。所以我的意思是“现在是2011年,带泛型的.NET2.0已经存在五年了”。