我有 2 个数组smallArray
,bigArray
例如
void myFun(TypeA a, TypeA b, TypeA c, TypeA d)
{
TypeA[] smallArray = new TypeA[]{a,b,c,d}
TypeA[] bigArray = new TypeA[]{a,b,a,b,c,c,c,d,d,a,c,b,d,a,d,...}
}
bigArray
仅包含来自的成员smallArray
。现在我想交换 中的所有对象bigArray
,但要保持结构顺序,并尽量减少操作次数。
例如,我的理想结果将是{aa,bb,aa,bb,cc,cc,cc,dd,dd,aa,cc,bb,dd,aa,dd,...}
……aa
的新对象TypeA
所以我将我的代码重新设计成这样:
class TypeB
{
public TypeA Value {get; set;}
}
void myFun(TypeB a2, TypeB b2, TypeB c2, TypeB d2) // where a2.Value = a, b2.Value = b...
{
TypeB[] smallArray = new TypeB[]{a2,b2,c2,d2}
TypeB[] bigArray = new TypeB[]{a2,b2,a2,b2,c2,c2,c2,d2,d2,a2,c2,b2,d2,a2,d2,...}
}
我将目标对象“装箱”到包装器中,并将包装的对象存储在数组中。现在,当我更新 中的对象值时,会同时更新 中smallArray
的成员值。bigArray
这种技术常用吗?还是有其他方法可以简化它?
更新
现在TypeA
变成string
这样你至少可以理解这个问题。
我有 2 个数组smallArray
,bigArray
例如
string[] smallArray = new string[] {"a","b","c","d"}
string[] bigArray = new string[] {"a","b","a","b","c","c","c","d","d","a","c","b","d","a","d",...}
bigArray
仅包含来自的成员smallArray
。现在我想交换 中的所有对象bigArray
,但要保持结构顺序,并尽量减少操作次数。
例如,我理想中的新 bigArry 会变成{"aa","bb","aa","bb","cc","cc","cc","dd","dd","aa","cc","bb","dd","aa","dd",...}
所以我将我的代码重新设计成这样:
class TypeB
{
public string Value {get; set;}
}
void myFun(TypeB a2, TypeB b2, TypeB c2, TypeB d2) // where a2.Value = "a", b2.Value = "b"...
{
TypeB[] smallArray = new TypeB[]{a2,b2,c2,d2}
TypeB[] bigArray = new TypeB[]{a2,b2,a2,b2,c2,c2,c2,d2,d2,a2,c2,b2,d2,a2,d2,...}
}
我将其“装箱”string
到包装器中,并将包装的对象存储在数组中。现在,当我更新 中的对象值时,会同时更新 中smallArray
的成员值。bigArray
所以在示例中我只需要更新 4 个对象而不是整个bigArray
.
这种技术常用吗?还是有其他方法可以简化它?