Ich habe Funktion folgendeC# Variable scheint out of scope nach Funktionsaufruf zu gehen
public int[] PollAllDevices()
{
/* Polling commands */
const byte POLL_FRONT_RADAR = 0x00;
const byte POLL_REAR_RADAR = 0x01;
const byte POLL_DISP = 0x02;
const byte POLL_CTRL = 0x03;
const byte POLL_EXP1 = 0x04;
const byte POLL_EXP2 = 0x05;
byte[] buff = new byte[32];
int[] _ret = new int[32];// { 23, 24, 25, 26, 27, 28, 29, 30 };
int i = 0;
if(API.uart_write(devPtr, new byte[1] { POLL_FRONT_RADAR }, 0, 1))
{
if (API.uart_read(devPtr, buff, 0, 1, 1000) != 0)
{
_ret[i++] = (int)buff[1];
}
}
if (API.uart_write(devPtr, new byte[1] { POLL_REAR_RADAR }, 0, 1))
{
if (API.uart_read(devPtr, buff, 0, 1, 1000) != 0)
{
_ret[i++] = (int)buff[1];
}
}
return _ret;
}
ich im Überwachungsfenster _ret haben. Ich kann es sehen, bis der Punkt existiert bis ich API.uart_read anrufen und dann stellt sich grau im Überwachungsfenster, und ich sehe
_ret nicht Wert der lokalen oder Argument ‚_ret‘ erhalten, wie es auf diese nicht verfügbar ist Befehlszeiger, möglicherweise weil er weg optimiert wurde. int []
(nur werfen, dass es in als zusätzliche Informationen. Es ist nicht meine Frage ist also bin ich nicht sicher, warum dies als Duplikat markiert wurde. Alle Lösungen zu diesem Fehler scheinen um Optimierung zu drehen und ich habe keine Optimierung eingeschaltet.)
Wenn ich versuche, es zu schreiben, erhalte ich eine Array außerhalb der Grenzen Ausnahme. i = 0 an diesem Punkt, aber nur für Grins habe ich es auf _ret [0] festgeschrieben und ich bekomme immer noch die Ausnahme. Wenn ich _ret zu einem int ändere, kann ich wieder darauf schreiben.
Ich habe die Optimierung ausgeschaltet. Kann mir jemand sagen, was ich hier falsch mache?
Mögliche Duplikate von [Der Wert von local oder argument kann nicht abgerufen werden, da er an diesem Befehlszeiger nicht verfügbar ist, möglicherweise weil er optimiert wurde] (http://stackoverflow.com/questions/8311303/cannot-obtain-value -of-local-or-argument-wie-es-ist-nicht-verfügbar-bei-diesem-instruct) – Sinatr
@BackDoorNoBaby, ich denke, das OP sagt, dass '_ret' scheint zu verschwinden (vom Debugger) * innerhalb * 'PollAllDevices', nach dem' API.uart_read' Aufruf. – adv12