Jestem programistą C++ i ostatnio zacząłem pracować nad WPF. Używam Array.Copy() w mojej aplikacji i wygląda na to, że nie jestem w stanie uzyskać pożądanego rezultatu.Nie można użyć Array.Copy() w mojej aplikacji WPF
zrobiłem w moim C++ aplikacja następująco:
static const signed char version[40] = {
'A', 'U', 'D', 'I', 'E', 'N', 'C', 'E', // name
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // reserved, firmware size
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // board number
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , // variant, version, serial
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 // date code, reserved
};
unsigned char sendBuf[256] = {};
int memloc = 0;
sendBuf[memloc++] = 0;
sendBuf[memloc++] = 0;
// fill in the audience header
memcpy(sendBuf+memloc, version, 8); // the first 8 bytes
memloc += 16; // the 8 copied, plus 8 reserved bytes
Zrobiłem podobną operację w moim WPF (C#) aplikacji w następujący sposób:
Byte[] sendBuf = new Byte[256];
char[] version =
{
'A', 'U', 'D', 'I', 'E', 'N', 'C', 'E', // name
'0', '0', '0', '0', '0', '0', '0', '0' , // reserved, firmware size
'0', '0', '0', '0', '0', '0', '0', '0' , // board number
'0', '0', '0', '0', '0', '0', '0', '0' , // variant, version, serial
'0', '0', '0', '0', '0', '0', '0', '0' // date code, reserved
};
// fill in the address to write to -- 0
sendBuf[memloc++] = 0;
sendBuf[memloc++] = 0;
// fill in the audience header
Array.Copy(sendBuf + memloc, version, 8); // the first 8 bytes
memloc += 16;
Ale to wyrzuca mi błąd przy Array.Copy(sendBuf + memloc, version, 8);
jako Operator '+' cannot be applied to operands of type 'byte[]' and 'int'
.
Jak można to osiągnąć? :) proszę o pomoc :)
Zgadza się. C# nie ma szalonych niejawnych konwersji tablicy-> wskaźnika, aby zmylić wszystkich. – chris
@chris: Jak możemy go osiągnąć, kolego? :) Dowolny alternatywny sposób? –
Nie byłbym osobą, która mogłaby zapytać. Nie mam jeszcze doświadczenia z C#, ale uwielbiam sposób, w jaki radzi sobie z niektórymi z tych, które uważam za wady C/C++. – chris