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

    [VB.NET] Chiarimento su Property, Eventi...

    Se io creo una classe, che differenza passa tra dichiarare una variabile pubblica e l'inserimento di una Property?
    Quando eredito la classe vedo comunque sia una variabile pubblica che una property.
    Che differenza passa tra "scatenare" un evento e il semplice richiamo di una funzione? Il principio è simile.
    Per adesso basta così, siate così gentili da chiarirmi questi concetti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    la variabile pubblica non esiste, a te sembra di dichiarare una variabile pubblica, ma vb crea una property in maniera trasparente. VB6 quando ad ogni set di un valore ed a ogni richiesta di valore creava la property, ovviamente questo incideva sulle prestazioni. Questo almeno vb.net non lo fa.

    Cmq meglio una property direttamente, gestisci ad esempio quando riceve un valore, se questo valore è corretto, quando lo restituisci lo potresti formattare secondo un certo formato, quindi la gestione del dato è più pulità e il codice più ordinato.

    Un evento da solo non ti serve, ma metti che la classe deve lavorare per i fatti suoi, quindi il programma dopo aver ad esempio invocato un metodo andare avanti per i fatti suoi, poi viene "scatenato" l'evento e il programma ne riprende il controllo.

    Spero altri abbiano altro da dire
    Ans.

  3. #3
    Cmq meglio una property direttamente, gestisci ad esempio quando riceve un valore, se questo valore è corretto, quando lo restituisci lo potresti formattare secondo un certo formato, quindi la gestione del dato è più pulità e il codice più ordinato.
    Concordo Pienamente.

    Inoltre per lavorare in maniera pulita, MSDN consiglia di creare la Property come Pubblic e una variabile locale Private che ne assegna il valore :

    Es

    codice:
    Public Class _MyClass
        Private _Prop As String
    
        Public Property Prop() As String
            Get
                Return _Prop
            End Get
            Set(ByVal Value As String)
                _Prop = Value
            End Set
        End Property
    
        Sub New(ByVal MyProp As String)
            Me._Prop = MyProp
        End Sub
    End Class

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    la property pubblica ti serve per la visibilità all'esterno, e la variabile privata è cmq necessaria. Non ricordo fino a .net 2003, pero' posso anche fare ad esempio:

    codice:
        Private _Prop As String
    
        Public Property Prop() As String
            Get
                Return _Prop
            End Get
            Private Set(ByVal Value As String)
                _Prop = Value
            End Set
        End Property
    quindi posso assegnare un valore alla proprietà solo all'interno della classe, dall'esterno sarà solo possibile leggerne il valore.
    Ans.

  5. #5
    Cmq meglio una property direttamente, gestisci ad esempio quando riceve un valore, se questo valore è corretto, quando lo restituisci lo potresti formattare secondo un certo formato, quindi la gestione del dato è più pulità e il codice più ordinato.
    In effetti questa è una buona motivazione

    codice:
     Private _Prop As String
    
        Public Property Prop() As String
            Get
                Return _Prop
            End Get
            Private Set(ByVal Value As String)
                _Prop = Value
            End Set
        End Property
    L'istruzione Private non può trovarsi all'interno di Property, quindi da' errore(almeno nella versione 2003).

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    avevo detto che non ricordavo bene x le versioni precedenti

    cmq con la nuova versione è possibile dare diversa visibilità al Get e al Set.
    Ans.

  7. #7
    Per ovviare basta creare una Property ReadOnly

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    Originariamente inviato da raffaeu
    Per ovviare basta creare una Property ReadOnly
    non è la stessa cosa, assolutamente. Io assegno due visibilità diverse, riflettici bene

    Se è ReadOnly non puo' essere assegnato il valore alla property, io invece posso fare in modo con Private o Friend di dare si possibilità di assegnare un valore, non a tutti.

    E cmq io ricordo che è sempre meglio assegnare il valore alla property anche all'interno della classe, e non alla variabile privata, questo perchè come già detto nel metodo Set posso avere codice di validazione del dato.

    Ho una proprità Data, Get pubblico e Set privato. Nel Set verifico che la data sia valida. Nella classe quando ricevo un valore da assegnare a Data non uso la varibile privata, ma assegno il valore alla property, che lo assegna alla variabile privata dopo la verifica se la data è valida. Dall'esterno non sarà possibile assegnare alcun valore invece a questa property Data.
    Ans.

  9. #9
    Ans ma io tutte queste cose le effettuo nel Sub New() ...

    Comunque MSDN dice di fare cosi':

    Proprietà ReadOnly Pubblica
    Variabile di Assegnazione Privata
    Elaborazione nella Sub New() --> Costruttore.

  10. #10
    avevo detto che non ricordavo bene x le versioni precedenti
    cmq con la nuova versione è possibile dare diversa visibilità al Get e al Set.
    La mia non era una "critica" di alcun genere, era una constatazione del fatto che nella versione 2003 non è possibile inserire Private in una Property

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.