Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 如何最好地复制数组的最后一个元素?_C# 4.0 - Fatal编程技术网

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已经存在五年了”。