Classe globale en c#.net

Bonjour tout le monde,
Je suis entrain de réaliser mon projet de stage d'été avec c#.net .
Dans ce cadre j'ai utilisé une classe globale pour y mettre un tableau de type variable globale
mais ça n'as pas marcher.Voila mon code

static class Class2
{
public static String[] m_globalVar1 = new string[250];
public static string GlobalVar1(int i)
{
get { return m_globalVar1[i]; }
set { m_globalVar1[i] = value; }

}

il me disait que le (get) et le (set) n'existe pas dans le contexte actuel et (value) aussi.Est ce quelqu'un pourrait m'aider à corriger l'erreur.merci d'avance.

6 réponses

  1. Qu'entends tu par "classe globale" ?
    Lucas
    1. classe globale est une classe définie à part dans le projet contenant des variables connus par tout le projet(toutes les formes)
    2. Et pourquoi la mettre en Static plutôt qu'en Public ?
    3. pour qu-elle soit reconnue par tout le projet sinon elle ne l'est pas
  2. En regardant sur le MSDN tu peux voir qu'il n'est pas possible de modifier une donnée statique d'une classe statique donc tu ne peux pas mettre le set.

    https://docs.microsoft.com/fr-fr/previous-versions/79b3xss3(v=vs.80)?redirectedfrom=MSDN#Y219
    1. Je me suis servie de ce lien

      http://www.developpez.net/forums/d465914/dotnet/developpement-windows/windows-forms/csharp-net-declarer-variable-globale/

      ça marchait avec une variable de type string mais pour un tableau c'était pas le cas
  3. Slt et sa ne choque personne que on fasse un get set sur un methode ?

    essaye de le faire sur une propriete et tu vera sa marchera
    1. Oui tu as raison Nico#.

      Le fait de mettre l'indice dans l'entête transforme la propriété en méthode.
      1. Pour faire ce que tu veut je te conseille de faire comme celà :

        Tu crée une classe par exemple ClasseGlobale

        class ClasseGlobale
            {
                private readonly string[] _variableGlobale;//déclaration d'un champ de type tableau 
        
                public ClasseGlobale(string[] variableGlobale)//déclaration du constructeur avec en paramètre un tableau du même type que le champ
                {
                    _variableGlobale = variableGlobale;//affectation du paramètre au chaud
                }
        
                public string this[int i]//création d'une propriété indexée ou parfois appelée indexeur de type de retour String et en passant l'index en paramètre de this
                {
                    get { return _variableGlobale[i]; }//on retourne l'index désiré
                    set { _variableGlobale[i] = value; }//on affecte la valeur index désirée
                }
            }
        


        puis tu instancie la classe comme ci-dessous

        private static string _s;
        
                static void Main(string[] args)
                {
                    var classeGlobale = new ClasseGlobale(new string[250]);
                    _s = classeGlobale[1];
                }
        


        Tu possèdes maintenant un moyen de récupérer la valeur contenue dans la variable _s
        1. merci bcp Nico#