Question

Je suis juste curieux ...

Est-il possible de libérer une variable en c #?

Ce que je veux dire, c'est, pouvez-vous faire quelque chose comme ceci:

...
string x = "billy bob";

//release variable x somehow

string x = "some other string";

//release variable x somehow

int x = 329;
...

... vous déclarez donc la variable plusieurs fois dans la même portée.

Si cela n’est pas possible en c #, en quelles langues est-il possible?

Était-ce utile?

La solution

Vous pouvez le faire avec des portées (terme vague; officiellement, je pense que ce serait un espace de déclaration), par exemple. Ce qui suit est parfaitement légal en C # dans un corps de méthode:

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

Je ne conseillerais cependant pas d'écrire un code comme celui-ci, car il est beaucoup trop facile de confondre des variables dans une méthode. Mieux vaut utiliser des noms différents, plus descriptifs, ou séparer chaque bloc en sa propre méthode.

Autres conseils

Non, cela n’est pas possible en C # dans le même cadre - pour lequel je suis très reconnaissant. Cela ressemble à une recette pour un désastre de lisibilité. Comme Greg l'a montré, vous pouvez introduire vos propres portées dans une méthode uniquement à cette fin.

Je ne sais pas quelles langues vous permettent de le faire - les langues faiblement typées vous permettent bien sûr d’affecter des valeurs arbitraires, mais je ne connais pas de langue qui possède des déclarations de variable explicites avec des informations de type et permet également une redéclaration dans le même périmètre.

Vous voudrez peut-être lire le dernier article de blog d’Eric Lippert, intitulé tout sur la portée . (Si vous ne lisez pas déjà le blog d'Eric, vous voudrez peut-être effacer quelques jours de votre calendrier et lire tous les articles précédents ... ou du moins ceux depuis qu'il a rejoint l'équipe C #. Préparez-vous à vous perdre la tête. à plusieurs reprises.)

vous pouvez réutiliser une chaîne:

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

Pourquoi voudriez-vous faire cela?

Peut-être pouvez-vous faire ceci:

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

Puis lancez-le comme bon vous semble?

Vous pouvez bien sûr réaffecter des variables:

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

Vous ne pouvez pas redéclarer des variables dans la même portée:

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

Etant donné que Object est la racine du système de types dans .NET, vous pouvez faire quelque chose comme ceci:

object o = "billy bob";
o = "foo";
o = 5;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top