Void & Variable publique sans utiliser "static"

Fermé
xxxinconitoxxx Messages postés 150 Date d'inscription jeudi 25 octobre 2012 Statut Membre Dernière intervention 15 novembre 2015 - 15 nov. 2015 à 14:32
Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 - 15 nov. 2015 à 15:43
Bonjour,

Je voudrai savoir s'il y avait un autre moyen de rendre un void ou une variable publique sans utiliser "static", Exemple :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App1
{
    public class Class1
    {
        public static string Var1 = "Je suis une variable accessible depuis une autre classe ! :D";
    }
}
A voir également:

1 réponse

Whismeril Messages postés 19035 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 1 mai 2024 931
15 nov. 2015 à 15:43
Bonjour,

il ne faut pas confondre public et static.

Public ça veut dire que ce sera accessible par une autre form, même (et c'est la majorité des cas) si ça n'est pas static.

Static ça "veut dire" que ça "existe" sans instance, c'est valable pour une variable privée ou public, une propriété, une méthode, une classe entière.

Par exemple Math est une classe statique, tu ne peux l'instancier.
Elle dispose de tout un tas de méthodes statique te permettant chacune un calcul spécifique: Math.Sin(), Math.Pow() etc... Elle dispose aussi de 2 variables (constantes ici) E et PI.
Tous ces membres sont public puisqu'on les voit dans nos programmes.
Il est possible qu'il y ait aussi des membres privés, mais comme on ne peut pas les voir....

int est une classe "normale", instanciable, on peut faire
int monInt = new Int();


Elle dispose de méthodes de classe (static) comme Parse par exemple
int nomInt = int.Parse("12");

Et des méthodes d'instance, ToString() par exemple:
Console.WriteLine(monInt.ToString());


Une fois cette précision faite, je suppose que tu cherche une variable globale, sache que c'est déconseillé et considéré comme "mal codé".
Il est préférable de passer des infos d'une classe à l'autre, ici un petit tuto sur le sujet. https://codes-sources.commentcamarche.net/faq/11107-interactions-entre-form-en-net-c-et-vb-net , c'est écrit pour les form, mais une form c'est une classe que l'on voit...

Si tu tiens quand même à la variable globale, alors une variable static dans une classe static (comme Math.PI) est une solution courante.
Il existe aussi les singleton, ce qui pour une simple variable revient un peu au même, voir cet article https://jlambert.developpez.com/tutoriels/dotnet/implementation-pattern-singleton-csharp/


0