Non solo che anche questo può produrre lo stesso errore
if (RdoBtnBeepDefault.Checked) SystemSounds.Beep.Play();
else int i=0;
La ragione è logica. Se si inserisce un'istruzione a riga singola in una condizione if else che indica indirettamente che il flusso condizionale termina con tale riga. In tal caso se si usa qualche dichiarazione || qualcosa come sopra che non ha senso/impatto in alcun modo, allora significa che è una specie di stringa letterale. Non è esattamente sbagliato, anzi è inutile. Mind C# visual studio editor riduce quasi tutti gli errori possibili e il caricamento di memoria non necessario.
Quando si inseriscono le parentesi, è indubbio che è possibile utilizzare tale variabile all'interno dello stesso blocco per un po 'di logica. Quindi l'editore ti permetterà di farlo. In quel momento il VS presume che tu possa aggiungere il codice in futuro. Quindi ti darà solo un avvertimento su quella linea. Senza parentesi, si presume che non si userà quella variabile (a causa dell'ambito). Quindi, lo considera come errore.
L'errore è dovuto al fatto che non è possibile dichiarare una variabile ('iPlay') in una singola istruzione se/else, a meno che non si utilizzi' {parentesi} '. (Penso che il linguaggio sia stato progettato in questo modo per evitare ambiguità ...) – Cameron