私は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
。
この技術は一般的に使用されていますか?またはそれを単純化する他の方法はありますか?