Array->Equals(Array) = false!?
-
Hallo,
ein Array->Equals(Array) ist bei mir immer false, obwohl sowohl die Länge, als auch die Werte beider Arrays gleich ist.
array<Byte> ^BufferStrip = gcnew array<Byte>(8); array<Byte> ^IPHead = gcnew array<Byte>{17, 80, 46, 75, 18, 11, 16, 1}; Array::Copy(Buffer,28,BufferStrip,0,8); // Ab Buffer[28] 8 Werte in Bufferstrip kopieren if(IPHead->Equals(BufferStrip)){ //hier kommt der code leider garnicht hin, obwohl die arrays "gleich" sind. }
Liegt das vielleicht daran, dass das erste Array direkt definiert ist und ich beim zweiten zunächst nur die Größe angebe?! Oder was mache ich falsch?! Übrigens ist ein IPHead->Equals(IPHead) = true! Gänzlich ungeeignet ist Equals für Arrays also nicht.
LG
-
Das Array-Equal ist das von Object::Equal und das vergleicht nur, ob die beiden *Referenzen* gleich sind! Und die sind nicht gleich, da Du zwei verschiedene Arrays hast (auch wenn sie inhaltlich gleich sind).
-
Ah, ok, gracias.
Ich gehe davon aus, du hättest eine Methode genannt, die effizienter ist als eine for-Schleife, wenn es eine gäbe ...
Danke & Gruß
-
In .NET 4 gibt es eine, aber nicht im aktuellen System...
-
BitConverter::ToInt64(Buffer,28) == ...
-
BitConverter::ToInt64(Buffer,28) == BitConverter::ToInt64(IPHead,0)
Läuft, danke!