IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Windows Discussion :

objet versus variable


Sujet :

Développement Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Par défaut objet versus variable
    Bonjour,

    Dans le chapitre 5 du livre Microsoft Visual C# 2010 étape par étape, il s'agit d'écrire une boucle while qui parcourt le contenu d'un fichier texte ligne par ligne et écrit chaque ligne dans une zone de texte d'un formulaire

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <Window x:Class="InstructionWhile.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Instruction while" Height="500" Width="500">
        <Grid>
            <Button Height="23" HorizontalAlignment="Left" Margin="11,40,0,0" Name="ouvrirFichier" VerticalAlignment="Top" Width="97" Click="ouvrirFichierClick">Ouvrir un fichier</Button>
            <Label Height="23.277" Margin="110,9,218,0" Name="label1" VerticalAlignment="Top">Fichier sélectionné</Label>
            <TextBox Height="26" Margin="120,39,12,0" Name="nomFichier" VerticalAlignment="Top" />
            <TextBox Margin="11,77,12,14" Name="source" IsReadOnly="True" AcceptsReturn="True" AcceptsTab="True" TextWrapping="WrapWithOverflow" VerticalScrollBarVisibility="Auto" />
        </Grid>
    </Window>

    Quand j'écris : source.Text = "";
    Est-ce que source est une instance de la classe, c'est à dire la référence à l'objet qui contient (représente) la zone de texte du formulaire ?
    Dans le livre, ils appellent source, variable. Il me semble qu'une variable n'est pas un objet.
    Est-ce que je me trompe ?

    Cordialement

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    classe = code qui décrit une structure objet
    instance = un objet en mémoire dont le type est une classe
    à partir d'une classe on peut créer plusieurs instances
    variable = conteneur qui contient soit une valeur, soit une instance d'objet

    source est une propriété qui pointe vers une variable de type textbox, donc c'est une instance de textbox
    .text est une propriété qui pointe vers une variable de type string, string est un type par valeur (comme int, bool, datetime ...)
    la variable qui contient le texte est dans la classe TextBox (le framework .net est en grande partie codé en .net)

    et pour t'embrouiller un peu plus, une propriété est composée d'une méthode (set) et d'une fonction (get), ca ne stocke rien, ca permet d'y accéder

    après il y a une différence entre un objet et un type par valeur
    dans une variable de type int par exemple, c'est la valeur de l'int qui est stockée
    dans une variable de type textbox c'est un pointeur vers une autre adresse mémoire qui contient l'instance du textbox
    (surement car un int ca prend 4 octets, mais une instance d'objet ca prend plus de place, donc c'est stocké ailleurs en mémoire, et on garde un pointeur)

    textbox est une classe
    écrire var t = new textbox() permet de créer une instance de cette classe, et de la ranger (enfin son pointeur) dans la variable t
    après si on part sur les références ca donne :
    var t2 = t ca fait que tu créé une autre variable de type textbox, et que tu mets dedans le pointeur de t
    donc tu te retrouves avec t et t2 qui sont 2 variables (2 petits espaces mémoire contenant un pointeur) dont le pointeur est le même, la même adresse qui pointe vers un seul textbox
    changer t.Text changera t2.Text car c'est la même instance
    t2 = new textbox() fait que dans t2 tu changes le pointeur, et tu mets un nouveau textbox ; là t et t2 ne pointent plus vers la même insance

    par contre pour les types par valeurs vu que c'est la valeur qui est stockée directement ca donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int i = 5; // création d'une variable i de type int, enregistrement de 5 dans la variable i
    int i2 = i; // création d'une variable i de type int, on copie i dans i2, mais là vu qu'il n'y a pas de pointeur (ce n'est pas un objet/classe) c'est 5 qui est copié
    i = 8;
    // i2 vaut toujours 5
    bon mal de tête
    (et si t'as suivi je peux en rajouter car en fait une variable c'est déjà un pointeur vers un espace mémoire, même pour un int ^^)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Objet Connection variable global
    Par anikeh dans le forum Access
    Réponses: 6
    Dernier message: 23/08/2006, 19h37
  2. Réponses: 2
    Dernier message: 02/06/2006, 13h47
  3. [VBA-E]erreur 91: variable objet ou variable de bloc With...
    Par cdk dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/03/2006, 14h19
  4. Réponses: 5
    Dernier message: 12/09/2005, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo