Domanda

Sono solo curioso ...

È possibile rilasciare una variabile in c #?

Quello che voglio dire è, puoi fare qualcosa del genere:

...
string x = "billy bob";

//release variable x somehow

string x = "some other string";

//release variable x somehow

int x = 329;
...

... quindi sostanzialmente stai dichiarando la variabile più volte nello stesso ambito.

Se ciò non è possibile in c #, in quali lingue è possibile?

È stato utile?

Soluzione

Puoi farlo con ambiti (termine generico; formalmente credo che questo sarebbe uno spazio di dichiarazione), ad es. quanto segue è C # perfettamente legale all'interno di un organismo del metodo:

{
    string x = "billy bob";    
}
{
    string x = "some other string";
}
{
    int x = 329;
}

Non consiglierei comunque di scrivere codice come questo, perché è troppo facile confondere le variabili in un metodo. Meglio usare nomi diversi, più descrittivi o separare ciascun blocco nel suo metodo.

Altri suggerimenti

No, questo non è possibile in C # nello stesso ambito, per il quale sono molto grato. Sembra una ricetta per il disastro della leggibilità. Come ha dimostrato Greg, è possibile introdurre i propri ambiti all'interno di un metodo solo a questo scopo.

Non so quali lingue ti permettono di farlo - le lingue debolmente tipizzate ti faranno spesso assegnare valori arbitrari, ma non conosco una lingua che abbia dichiarazioni variabili esplicite con informazioni sul tipo e consente anche una redeclaration nello stesso ambito.

Potresti leggere l'ultimo post sul blog di Eric Lippert, che è tutto sull'ambito . (Se non hai già letto il blog di Eric, potresti voler cancellare alcuni giorni nel tuo calendario e leggere tutti i post posteriori ... o almeno quelli da quando è entrato nel team C #. Preparati a farti saltare la testa più volte.)

puoi riutilizzare una stringa:

string x = "billy bob";
x = "some other string";

Perché dovresti voler fare questo?

Forse puoi farlo:

object x = "billy bob"
x = "some other string";
x = 329;

Quindi lanciarlo come preferisci?

Puoi riassegnare le variabili, ovviamente:

string s = "billy bob";
s = "something else";

Non puoi dichiarare nuovamente le variabili nello stesso ambito:

// This is illegal:
string s = "billy bob";
string s = "foo"

Poiché Object è la radice del sistema di tipi in .NET, puoi fare qualcosa del genere:

object o = "billy bob";
o = "foo";
o = 5;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top