我不確定是否有正確的術語,但會盡力描述我可以!在C#中重新分配一個變量指向另一個變量的過程是什麼?
目前我已在一個for
循環內執行以下操作:
NewArray.Add(RawDataArray[i].Value);
在處理期間RawDataArray一些額外的陣列的將被創建的過程中,例如NewArray1,NewArray2等
在一個點我需要NewArray指向NewArray1,以便.Add
方法將數據添加到NewArray1和在另一個點,我需要指向NewArray到另一個NewArray X
如何在C#中執行此操作?
編輯: 爲了試圖澄清這裏,我希望相關部分:
List<object> NewArray = new List<object>();
for (int i = 1; i <= RawDataArray.Count; i++)
{
if (RawDataArray[i].TypeCode == 5005)
{
NewArray.Add(RawDataArray[i].Value);
}
if (RawDataArray[i].TypeCode == 5016)
{
//RawDataArray[i] should be added to NewArray1
>> Create NewArray1 and "change" NewArray so that it points to NewArray1 <<
NewArray.Add(RawDataArray[i].Value);
}
if (RawDataArray[i].TypeCode == 5017)
{
//RawDataArray[i] should be added to NewArray2
>> Create NewArray2 and "change" NewArray so that it points to NewArray2 <<
NewArray.Add(RawDataArray[i].Value);
}
}
希望這是更清晰一點:)
附加編輯:
好,所以我沒有解釋得太好,所以我想還是需要更多的信息,這樣你才能看到完整的圖片。 我有一個原始數據流,在這種情況下,由RawDataArray模擬(OK的'數組'的術語不正確,接受!!)。
struct TypedValue
{
private readonly int typeCode;
private readonly object value;
public TypedValue(int typeCode, object value)
{
this.typeCode = typeCode;
this.value = value;
}
public int TypeCode { get { return typeCode; } }
public object Value { get { return value; } }
}
static readonly IList<TypedValue> RawDataArray = new ReadOnlyCollection<TypedValue>
(new[] {
new TypedValue(5005,@"String Value 1"),
new TypedValue(5005,@"String Value 2"),
new TypedValue(5016,@"-1"),
new TypedValue(5005,@"String Value 3"),
new TypedValue(5005,@"String Value 4"),
new TypedValue(5005,@"String Value 5"),
new TypedValue(5005,@"String Value 6"),
new TypedValue(5005,@"String Value 7"),
new TypedValue(5017,@"-1"),
new TypedValue(5016,@"-1"),
new TypedValue(5005,@"String Value 8"),
new TypedValue(5005,@"String Value 9"),
new TypedValue(5005,@"String Value 10"),
new TypedValue(5005,@"String Value 11"),
new TypedValue(5005,@"String Value 12"),
new TypedValue(5005,@"String Value 13"),
new TypedValue(5005,@"String Value 14"),
new TypedValue(5005,@"String Value 15"),
new TypedValue(5005,@"String Value 16"),
new TypedValue(5005,@"String Value 17"),
new TypedValue(5005,@"String Value 18"),
new TypedValue(5005,@"String Value 19"),
new TypedValue(5017,@"-1"),
new TypedValue(5016,@"-1"),
new TypedValue(5005,@"String Value 20"),
new TypedValue(5005,@"String Value 21"),
new TypedValue(5005,@"String Value 22"),
new TypedValue(5005,@"String Value 23"),
new TypedValue(5005,@"String Value 24"),
new TypedValue(5017,@"-1"),
new TypedValue(5005,@"String Value 25"),
new TypedValue(5016,@"-1"),
new TypedValue(5005,@"String Value 26"),
new TypedValue(5005,@"String Value 27"),
new TypedValue(5005,@"String Value 28"),
new TypedValue(5005,@"String Value 29"),
new TypedValue(5005,@"String Value 30"),
new TypedValue(5017,@"-1"),
});
混亂的部分是,5016和5017分別形成的數據塊的開始和結束typeCode
。也就是說,這些typeCodes
之間的數據需要進入一個臨時數組(或其他東西),然後插入到NewArray中。
所以,在僞代碼中,我有這樣的工作思路:
1)(INT I = 1;我< = RawDataArray.Count;我++)
2)如果i.typeCode = 5005然後將i.value添加到NewArray
3)如果i.typeCode = 5016,則創建一個臨時數組並使NewArray指向它,以便對Add方法的調用現在添加到臨時數組中。 4)如果i.typeCode = 5017,則將臨時數組添加到NewArray並將NewArray變量添加到NewArray。
List<object> NewArray = new List<object>();
for (int i = 1; i <= RawDataArray.Count; i++)
{
if (RawDataArray[i].TypeCode == 5005)
{
NewArray.Add(RawDataArray[i].Value);
}
if (RawDataArray[i].TypeCode == 5016)
{
//RawDataArray[i] should be added to temporary array
//Create temporary array and "change" NewArray so that it points to temporary array
NewArray.Add(RawDataArray[i].Value);
}
if (RawDataArray[i].TypeCode == 5017)
{
//temporary array should be added to NewArray
//Add temporary array to NewArray and re-assign NewArray Variable to reference NewArray so that calls to .Add method add to NewArray
}
}
想法是這樣的。當RawDataArray遍歷時,如果遇到5005的typeCode
,它會將值添加到NewArray。如果typeCode
是5016,它將啓動一個臨時數組並重新分配NewArray變量以指向臨時數組。當下一次遇到5005 typeCode
時,NewArray變量指向臨時數組,以便add方法將該值添加到臨時數組中。當找到5017 typeCode
時,我們知道臨時數組已完成,需要將其添加到NewArray中,以便此過程完成。 由於NewArray變量現在指向NewArray而不是臨時數組,因此任何後續的.Add調用都將添加到NewArray(因此在5016之外的5005的typeCode
和5017數據塊被添加到NewArray。
該圖像還可以幫助http://i.xomf.com/myhln.png
我找到一個像或許有時更好。這似乎是一個簡單的問題,但它是相當困難的話:(
Ummmm'NewArray = NewArray1;'? – itsme86
因此,基本上,你想使用'NewArray'就像一個指針? –
我想這個「數組」,你調用的Add()方法實際上是一個'List',對吧?如果它是'ArrayList',這已經過時多年了,你應該真的使用'List '來代替。 –