传递对 C# 数组中元素的引用
Posted
技术标签:
【中文标题】传递对 C# 数组中元素的引用【英文标题】:Pass reference to element in C# Array 【发布时间】:2010-09-07 01:22:24 【问题描述】:我用
构建了一个字符串数组string[] parts = string.spilt(" ");
并获得一个包含 X 部分的数组,我想获得从元素开始的字符串数组的副本
parts[x-2]
除了明显的蛮力方法(创建一个新数组并插入字符串)之外,在 C# 中有没有更优雅的方法来做到这一点?
【问题讨论】:
【参考方案1】:我记得回答过这个问题,并且刚刚了解了一个新对象,它可以提供一种高性能的方法来做你想做的事。
看看ArraySegment<T>
。它会让你做类似的事情。
string[] parts = myString.spilt(" ");
int idx = parts.Length - 2;
var stringView = new ArraySegment<string>(parts, idx, parts.Length - idx);
【讨论】:
【参考方案2】:Array.Copy 怎么样?
http://msdn.microsoft.com/en-us/library/aa310864(VS.71).aspx
Array.Copy 方法(Array, Int32, Array, Int32, Int32)
从指定源索引开始的 Array 中复制一系列元素,并将它们粘贴到从指定目标索引开始的另一个 Array。长度和索引指定为 32 位整数。
【讨论】:
【参考方案3】:List<string> parts = new List<string>(s.Split(" "));
parts.RemoveRange(0, x - 2);
假设 List<string>(string[])
被优化为使用现有数组作为后备存储而不是执行复制操作,这可能比执行数组复制更快。
【讨论】:
【参考方案4】:使用Array.Copy。它有一个可以满足你需要的重载:
Array.Copy(数组,Int32,数组, Int32, Int32)从指定源开始的 Array 中复制一系列元素 索引并将它们粘贴到另一个数组 从指定的目的地出发 索引。
【讨论】:
【参考方案5】:Array.Copy Method
我猜是这样的:
string[] less = new string[parts.Length - (x - 2)];
Array.Copy(parts, x - 2, less, 0, less.Length);
(sans 我确定其中有 1 个错误。)
【讨论】:
以上是关于传递对 C# 数组中元素的引用的主要内容,如果未能解决你的问题,请参考以下文章