2016-05-30 8 views

Antwort

7

Sie können diese Initialisierung bei Bauzeit nur tun:

byte[] frame_to_send = { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00}; 

Zu einem späteren Zeitpunkt können Sie es nur so:

frame_to_send = new byte[]{ 0x68, 0x04, 0x83, 0x00, 0x00, 0x00}; 

Hinweis dass in dem Code, den Sie zuerst zeigen, ein Byte ar erstellen ray mit allen Werten auf 0 gesetzt, und dann (versuchen Sie), eine neue zu erstellen, die vollständig erstellte vollständig verworfen. Deine erste Aufgabe ist also völlig überflüssig.

+0

@Fabjan Nein, der Compiler interpretiert die Literale als 'int' und kann nicht konvertieren 'int []' in ein 'byte []'. Versucht es;) –

+0

Und das, meine Damen und Herren, ist, warum, zusätzlich zu machen den Code blutig unleserlich, weglassen Arten ist eine schlechte Idee :) – Nyerguds

+0

Ja, du hast Recht, nur vergaß, dass standardmäßig erstellt es int 'Array, Upvoted Ihre Antwort sowieso – Fabjan

4

C keine Arrayliteral Syntax wie das haben. Nur zur Bauzeit können Sie das tun.

Passen Sie Ihren Code zu sein:

byte[] frame_to_send= new byte[] { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00}; 
+0

Keine echte Notwendigkeit von expliziten Typ in der rechten Seite des Ausdrucks, 'byte [] frame_to_send = {..};' sollte funktionieren – Fabjan

1

Dies ist, was Sie suchen:

byte[] frame_to_send = new byte[] { 0x68, 0x04, 0x83, 0x00, 0x00, 0x00}; 
2

Wenn Sie nach dem Array verwenden möchten es zu erklären, dann müssen Sie es durch das Element Element zuzugreifen.

byte [] frame_to_send = neues Byte [6];

frame_to_send [0] = 0x68;
frame_to_send [1] = 0x04;
frame_to_send [2] = 0x83;
frame_to_send [3] = 0x00;
frame_to_send [4] = 0x00;
frame_to_send [5] = 0x00;

Sie können immer Schleife verwenden, um es zu tun.

+0

Die Schleife würde unweigerlich auf ein anderes, bereits existierendes Array zugreifen, in welchem ​​Fall 'Array.Copy (data_containing_array, frame_to_send, frame_to_send.Length)' eine viel einfachere Lösung als eine Schleife ist. – Nyerguds

+0

Das war eine großartige Idee. –