【发布时间】:2019-11-14 12:21:45
【问题描述】:
我在 Unity 中工作,我有不同类型的数组需要检查和操作。在引用类型出现一些问题后,我找到了以下解决方案:
我已经像这样创建了“ArrayHelper”类
public class ArrayHelper {
public static void TrimArray<T>(ref T[] array)
{
T[] newArray = new T[array.Length - 1];
for (int i = 0; i < newArray.Length; i++)
{
newArray[i] = array[i];
}
array = newArray;
}
}
我是这样使用这种方法的:
void Start()
{
ArrayHelper.TrimArray(ref myArray);
}
虽然这行得通,但我不认为它真的很优雅。我找到了this thread,他们在其中展示了我可以如何做到这一点:
void Start()
{
nextPaths.Trim();
}
为此,我将 ArrayHelper 类更改为:
public static class ArrayExtensionMethods {
public static void Trim<T>(this T[] array)
{
T[] newArray = new T[array.Length - 1];
for (int i = 0; i < newArray.Length; i++)
{
newArray[i] = array[i];
}
array = newArray;
}
}
当我调用该方法时,它不会更改数组。我怀疑这是由于参考。有没有一种方法可以让我像这样正常操作我的数组?
注意: 'ArrayExtensionMethods' 中还有其他方法可以以更复杂的方式操作数组。因此,我正在寻找我的问题的通用解决方案,而不是我只能用来替换“Trim()”方法的解决方案。
【问题讨论】:
-
Array.Resize(ref array, array.Length - 1); -
public static T[] Trim
(this T[] array){ ..... return newArray;} -
@Dmitry 你 can't reassign the
arrayparameter.
标签: c# arrays extension-methods