Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment limiter la portée des variables en VB.Net ?

Sujet résolu
21 février 2012 à 2:24:34

Salut

En C# c'est super simple de limiter la portée des variables, supposant que j'ai un fichier machin.aspx avec du code C# suivant :

{
String Val1="aaa";
}
{
String Val1="bbb";
}


Ce code ne génère aucune erreur en C# car ce dernier comprend bien que ces variables se trouves uniquement dans leurs portées et seront automatiquement detruit apres la fin de l'accolade. Mais le problème en VB.Net c'est que cette methode ne marche pas!! Car j'ai besoin d'avoir certains variables avec le meme nom et ne me dites pas svp d'utiliser des noms différents. Si quelqu'un ici connait le C++ alors je cherche s'il est possible d'utiliser un espace de nom sans nom comme par exemple :


namespace
String Val1="aaa";
End namespace


Mais chez moi le compilateur me repond par une erreur.

Merci d'avance
  • Partager sur Facebook
  • Partager sur Twitter
21 février 2012 à 7:52:54

Salut,
En Visual Basic, une variable peut avoir trois portées différentes :
  • Le niveau procédure, le plus fin, qui permet de limiter l'existence de la variable à la fonction ou procédure en cours ;
  • le niveau formulaire permet l'accès à la variable à toutes les procédures d'un même formulaire ;
  • le niveau projet permettant d'accéder au contenu de la variable dans toute l'application.

exemple :
Dim Nom As String

placé en début d'une procédure, déclare une chaîne de caractères Nom pour la procédure courante uniquement.

Dim Nom As String


placé en début de formulaire, déclare une chaîne de caractères Nom pour toutes les procédures de celui-ci.

Public Nom as String


placé dans un module, déclare une chaîne de caractères Nom pour tout le projet.

Voilà ! j'espère avoir répondu à ta question.
cordialement
  • Partager sur Facebook
  • Partager sur Twitter
21 février 2012 à 8:36:24

Tu remplaces les accolades par des "If True Then", c'est le moyen le plus simple de déclarer un bloc en VB.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
21 février 2012 à 12:09:56

Si t'as vraiment besoin de faire ça, ta méthode devrait probablement être coupée en sous-méthodes...
  • Partager sur Facebook
  • Partager sur Twitter
20 juin 2012 à 15:41:24

Désolé de revenir sur ce fil mais justement par rapport à la portée des variables en C# :
Est-ce que seules les variables déclarées dans un bloc sont utilisables dans ce blog ? Est-ce possible de déclarer une variable utilisable dans plusieurs blocs ou plusieurs méthodes ? (apparentées à des variables globales en VB).
Certes ne pas forcément conseillé mais bon...

namespace MonEspace
{
	public class MaClass
	{
		public void Méthode()
		{
                        string Chaine= null;
			...
                        Méthode1();
                        Chaine=Chaine+maVariable;
                        ...
		}
	}

	static void Méthode1
	{
		...
		maVariable = "titi";	
		...	
	}

	static void Méthode2
	{
		...
		maVariable = "toto";
		...
	}
}


Où puis-je déclarer "maVariable" pour qu'elle soit reconnue partout ?
Merci !!
  • Partager sur Facebook
  • Partager sur Twitter
20 juin 2012 à 16:14:11

namespace MonEspace
{
        public static class Globales
        {
              private string maVariable;
        }
        public class MaClass
	{
		public void Méthode()
		{
                        string Chaine= null;
			...
                        Méthode1();
                        Chaine=Chaine+Globales.maVariable;
                        ...
		}
	}

	static void Méthode1
	{
		...
		Globales.maVariable = "titi";	
		...	
	}

	static void Méthode2
	{
		...
		Globales.maVariable = "toto";
		...
	}
}


Je suis pas fan des classes globales
  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2012 à 9:53:12

Merci Erendar
mais ça ne fonctionne pas ! "globales" il n'aime pas !
Bon c'est pas grave car de plus je viens de lire ceci sur la doc MSDN :

"Globales : En C#, les méthodes et variables globales ne sont pas prises en charge. Les méthodes et variables doivent être contenues dans une class ou struct."
  • Partager sur Facebook
  • Partager sur Twitter
21 juin 2012 à 9:59:45

Regarde mes lignes 3 à 6 s'il te plait....
  • Partager sur Facebook
  • Partager sur Twitter