Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [c#] riferimento tra due valori di due classi

    Allora come da titolo io ho due classi: e nella seconda classe devo creare una variabile che faccia riferimento a una variabile della prima classe, quindi cambiandola deve cambiare anche il valore della variabile della prima, in pratica la variabile della seconda classe deve puntare alla prima. Come posso fare??
    Ho provato con il boxing:

    codice:
    public classe1{
     public object primavariabile=new object();
     public void Mostra(){
         MessageBox.Show(((int)primavariabile)).Tostring());
     }
    }
    
    classe2{
        public classe1 prima=new classe1();
     
       //Costruttore
       public classe2(){
          prima.primavariabile=secondavariabile;//Creo il riferimento
       }
       object secondavariabile=new object();
    
       int num;
       public int Num{
          get{ return (int)secondavariabile;}
          set{ secondavariabile=value;}
       }
    }
    
    Ho un form nel quale dichiaro un oggetto di tip classe 2 con una textbox ed un pulsante, al click del pulsante il numero inserito nella textbox deve essere inserito in secondavariabile dell oggetto di tipo classe2 quindi deve cambiare anche primavariabile che fa riferimento a secondavariabile.
    
    public class form1{
       classe2 seconda=new seconda();
        void btnClick(...){
           seconda.secondavariabile=Convert.ToInt32(textbox.text);
           seconda.prima.Mostra();//Dovrebbe mostrare una messaggio con lo stessto valore di secondavariabile ma invece restituisce un eccezzione perche???
        }
       
    }
    Se questo e un modo sbagliato, esiste qualche altro modo per puntare due variabile di due classi??

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310
    Sarebbe sufficiente, in questo caso, avere nell'istanza della seconda classe, chiamiamola "B", un riferimento all'istanza della classe "A", provvedendo quindi a modificare direttamente il campo/variabile interessato.

    P.S.: il boxing è un'operazione differente da quella che intendi tu...

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

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

  3. #3
    In che senso creare un riferimento???
    In pratica io voglio che cambiando il valore in una classe deve cambiare anche il valore dell'altra classe

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310
    Originariamente inviato da gigi90
    In che senso creare un riferimento???
    Inserisci un campo di tipo "classe A" nella definizione della classe B.
    Quindi, crei due oggetti, uno di tipo A e uno di tipo B.
    In seguito, leghi gli oggetti assegnando al campo di tipo A nell'oggetto B il riferimento all'oggetto A.

    In poche parole, non è necessario duplicare una variabile presente in A e B: è sufficiente inserire una variabile tipo A in B, e all'interno del codice di B modificare il valore della variabile dell'oggetto di tipo A attraverso il relativo riferimento.

    Originariamente inviato da gigi90
    In pratica io voglio che cambiando il valore in una classe deve cambiare anche il valore dell'altra classe
    Se le variabili devono essere distinte, probabilmente è possibile sincronizzarle con un evento.

    Ad ogni modo, non comprendo bene a cosa dovrebbe servire questo tipo di soluzione, così come è stata descritta: mi sembra uno spreco inutile di variabili e un allineamento che può portare problemi di estensibilità o scalabilità del sistema.

    Magari spiegando cosa cerchi di realizzare, è possibile fornire una "versione alternativa" del modello ad oggetti.

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

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

  5. #5
    Allora ho creato un oggetto di tipo A nella definizione di classe di tipo B poi dovendo creare un riferimento tra due tipi int che sono di tipo valore effetto un boxing con il tipo object per farli diventare riferimento:

    public class A{
    public object variabileclasseA
    }

    public class B{
    A prima=new A();
    object variabileClasseB
    variebileClasseB=prima.variabileclasseA;


    public void Inizializza(){//Devo metterci all'interno un valore int quindi:
    variabileClasseB=12;//A questo punto dovrebbe essere cambiato anche il contenuto della //variabile a cui fa riferimento variabileClasseB cioè variabileClasseA
    }

    //verifico il contenuto con una procedura:
    public void stampa(){
    MessageBox.Show(((int)variabileclasseB).ToString() );//Stampa correttamente il valore
    MessageBox.Show(((int)prima.variabileclasseA).ToSt ring());//Restituisce un eccezzione
    //Perche restituisce un eccezzione se all'interno dovrebbe esserci inscatolato 12??
    }

    }


    In allegato sta il codice così vedi tu che eccezzione mi da:
    esempio.zip

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 © 2024 vBulletin Solutions, Inc. All rights reserved.