【发布时间】:2018-08-19 02:32:55
【问题描述】:
所以,我遇到了一个奇怪的问题。
让你知道我想要实现的目标,但惨遭失败:
int[] testArray = new int[100];
typeof(int[])
.GetProperty("Length", BindingFlags.Instance | BindingFlags.Public)
.SetValue(testArray, 50);
是的,也就是说,我想修改 C# 数组的 Length 属性(仅使其小于实际大小),不创建新数组并复制内容 - 以避免 GC 等...
背景:
在Unity中,有这个功能:
void SetIndices(int[] indices, MeshTopology topology, int submesh, bool calculateBounds);
如您所见,SetIndices 不接受“开始”和“结束”或至少“长度”作为参数。这就是为什么我想修改我的索引数组的长度来欺骗这个函数。
有什么想法吗?
【问题讨论】:
-
Length 属性是只读的。设置它不会做任何事情。
-
我意识到,有没有可以修改的私有成员?
标签: c# arrays unity3d reflection private