Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    Dubbione.. istanza di una classe con sua proprietà

    ciao, scusate se sbaglio i termini ma non sono molto ferrato.. mettiamo che ho questa classe (e non ridete!!!!):
    codice:
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace MioNameSpace
    {
        
        class UserLevel
        {
            private int m_Level;
    
            public UserLevel(int Valore)
            {
                m_Level = Valore;
            }
            
            public UserLevel(){}
            
            public int Valore
            {
                get
                {
                  return  m_Level;
                }
                set
                {
                    m_Level = value;
                }
            }
        }
    }
    adesso in un form la istanzio:
    codice:
    UserLevel usr = new UserLevel();
    usr.Valore = 1;
    e fino a qui nessun problema..
    il problema sorge (ma per mia inesperienza) quando devo andare a controllare questo valore che ho settato in questo form, da un altro form.. infatti se nel secondo form reistanzio la classe "Valore" ritorna a zero.. mentre io vorrei vedere il valore che ho settato nella prima form..
    help :=

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Re: Dubbione.. istanza di una classe con sua proprietà

    Originariamente inviato da dops
    il problema sorge (ma per mia inesperienza) quando devo andare a controllare questo valore che ho settato in questo form, da un altro form.. infatti se nel secondo form reistanzio la classe "Valore" ritorna a zero.. mentre io vorrei vedere il valore che ho settato nella prima form..
    Se crei una nuova istanza, è normale che il nuovo oggetto avrà un valore predefinito e agire sulla sua proprietà dal form secondario non modificherà quello dell'altro oggetto cui si riferisce il primo form.

    Devi semplicemente passare al form secondario il riferimento dell'oggetto che hai creato, memorizzandolo in una variabile, in modo che quel form manipoli l'oggetto creato dal primo senza istanziarne un altro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126

    Re: Re: Dubbione.. istanza di una classe con sua proprietà

    Originariamente inviato da alka
    Se crei una nuova istanza, è normale che il nuovo oggetto avrà un valore predefinito e agire sulla sua proprietà dal form secondario non modificherà quello dell'altro oggetto cui si riferisce il primo form.

    Devi semplicemente passare al form secondario il riferimento dell'oggetto che hai creato, memorizzandolo in una variabile, in modo che quel form manipoli l'oggetto creato dal primo senza istanziarne un altro.
    alka il problema però non è cos' semplice almeno per me..
    si tratta della form di login (quella su cui hai anche fatto la pillola)..e da quella form di login che modifico il valore di "Valore", come faccio poi a passare alla form main il riferimento dell'oggetto? dovrei creare una istanza della form main all'interno della form di login, ma poi questo mi crea problemi nel file program.cs perchè lì ne viene creata un'altra per appunto aprire la form..

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    In tal caso, crea una classe con i valori che devono essere condivisi, per così dire "globali", e introduci un metodo statico che crei un'istanza di quella classe e la memorizzi in campo statico della classe stessa.

    Le classi che costituiscono la tua applicazione possono invocare quel metodo per ottenere, la prima volta, un nuovo oggetto e per le volte successive, se l'oggetto esiste già, il suo riferimento.

    Oltre a questo meccanismo, nella classe si potranno includere tutti i campi che devono essere condivisi per tutti i form e tutte le classi in generale.

    Per esempi pratici, cerca implementazioni del "design pattern" Singleton basate su C#.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da alka
    In tal caso, crea una classe con i valori che devono essere condivisi, per così dire "globali", e introduci un metodo statico che crei un'istanza di quella classe e la memorizzi in campo statico della classe stessa.

    Le classi che costituiscono la tua applicazione possono invocare quel metodo per ottenere, la prima volta, un nuovo oggetto e per le volte successive, se l'oggetto esiste già, il suo riferimento.

    Oltre a questo meccanismo, nella classe si potranno includere tutti i campi che devono essere condivisi per tutti i form e tutte le classi in generale.

    Per esempi pratici, cerca implementazioni del "design pattern" Singleton basate su C#.

    Ciao!
    ao parla potabile please
    non è che mi puoi introdurre un esempio?

  6. #6
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    no davvero, non ho capito molto bene..
    tu mi chiedi di creare un metodo statico dove istanzio la classe UserLevel, e qui già ti faccio la prima domanda: dove dici di creare questo metodo statico? nel file program.cs? una cosa del tipo
    codice:
            internal static void UserInstance()
            {
                UserLevel usrlevel = new UserLevel();
            }
    ?
    e poi da un qualsiasi form come faccio a riprendere la classe UserLevel istanziata? non mi puoi fare un esempio?

  7. #7
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    scusa.. ignpra l'ultimo post..
    ho detto una cazzata.. cmq mi rincuora che non è un problema che è nato adesso solo per me..

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Il metodo statico va nella classe stessa da creare.

    Purtroppo non ho il tempo materiale di produrre un esempio ora.

    Hai dato un'occhiata a quanto ti ho suggerito? (Singleton)
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it L'avatar di dops
    Registrato dal
    Jul 2000
    Messaggi
    4,126
    Originariamente inviato da alka
    Il metodo statico va nella classe stessa da creare.

    Purtroppo non ho il tempo materiale di produrre un esempio ora.

    Hai dato un'occhiata a quanto ti ho suggerito? (Singleton)
    fatto (non avevo dato una occhiata..):
    codice:
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace SpaRiscFatt
    {
        
        class UserLevel
        {
            private int m_Level;
            private static UserLevel instance;
            
            public UserLevel(int Valore)
            {
                m_Level = Valore;
            }
            
            public UserLevel(){}
            
    
            public static UserLevel GetInstance()
            {
                if (instance == null)
                {
                    instance = new UserLevel();
                }
                return instance;
            }
    
    
            public int Valore
            {
                get
                {
                  return  m_Level;
                }
                set
                {
                    m_Level = value;
                }
            }
        }
    }
    thanx mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.