Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Classi ed istanze

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7

    absolute beginner (class e istanze)

    scusate sono terra terra ... ma mi applico, ci perdo un sacco di tempo chissà se riesco o abbandono? datemi un consiglio ;-[
    premetto che ho già visto un video tutorial e ho letto tutta la mattinata e ieri sulle classi il videotutorial era con visual studio io ho VWD ho riprodotto l'esempio ma non ottengo lo stesso risultato
    ======== spiegazione ----
    ho creato una classe testpersona e una pagina con 2 bottoni che incollo il bottone SET deve memorizzare le proprietà il bottone GET le deve leggere ho problemi a istanziare l'oggetto nel bottone GET ecco.. grazie per la corteser risposta saluti.
    ======================== file: Default2.aspx ===========
    Partial Class Default2

    Inherits System.Web.UI.Page

    Dim testpersona As persona

    Protected Sub ButGet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButGet.Click
    'se metto la parola NEW per evitare l'errore mi ritorna default_name
    'testpersona = New persona
    Me.Label1.Text = "Dimmi chi è il giardiniere: " & testpersona.nome
    End Sub
    Protected Sub ButSet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButSet.Click

    testpersona = New persona
    testpersona.nome = "Giuseppe"
    testpersona.lavoro = "giardiniere"
    Me.Label1.Text = "Ho messo: " & testpersona.nome & " mestiere:" & testpersona.lavoro

    End Sub

    End Class


    ======================== file test.vb =========

    Public Class persona

    Protected suonome As String
    Protected suolavoro As String


    Public Property nome()
    Get
    Return suonome
    End Get
    Set(ByVal value)
    suonome = value

    End Set
    End Property


    Public Property lavoro()
    Get
    Return suolavoro
    End Get
    Set(ByVal value)
    suolavoro = value
    End Set
    End Property

    Public Sub New()

    suonome = "default nome"
    suolavoro = "default nome"
    End Sub

    End Class

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Con due istanze diverse come pretendi di avere un ritorno ?
    In altre parole, nel SET dai un nome ad un oggetto di tipo persona, ma nel GET stai interagendo con un NUOVO oggetto di tipo persona, ovvio che ti ritorna il default che hai impostato...

    Secondo me dovresti fissare meglio i concetti cardine, l'esempio non ha molto senso ... :master: Scusa la sincerità

    Potresti fare così (ma solo per metterci una pezza)
    codice:
    PERSONA.VB
       Public Class persona
        Protected suonome As String
        Protected suolavoro As String
    
        Public Property nome()
            Get
                Return suonome
            End Get
            Set(ByVal value)
                suonome = value
            End Set
        End Property
    
        Public Property lavoro()
            Get
                Return suolavoro
            End Get
            Set(ByVal value)
                suolavoro = value
            End Set
        End Property
    
        Public Sub New()
            suonome = "default nome"
            suolavoro = "default nome"
        End Sub
       End Class
    
    
    
    
    
    PAGINA.ASPX:
        <form id="form1" runat="server">
        <div>
        <asp:Button ID="butGet" runat="server" Text="Get" />
        <asp:Button ID="butSet" runat="server" Text="Set" />
        </div>
        </form>
    
    
    
    
    PAGINA.ASPX.VB
       Dim testpersona As persona
    
        Protected Sub ButGet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButGet.Click
            testpersona = New persona
            If Not isnothing(session("objPersona")) Then
                testpersona = CType(session("objPersona"), persona)
            End If
            Response.Write("Il giardiniere è: " & testpersona.nome)
        End Sub
    
        Protected Sub ButSet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButSet.Click
            testpersona = New persona
            testpersona.nome = "Giuseppe"
            testpersona.lavoro = "Giardiniere"
            Response.Write("Hai impostato: " & testpersona.nome & " - " & testpersona.lavoro)
            Session("objPersona") = testpersona
        End Sub
    Se per prima cosa clicchi sul bottone Get ti ritorna "default nome" perche' non hai impostato nulla.
    Se clicchi invece dopo aver settato le proprietà con il bottone Set, ti torna "Giuseppe".

    Spero ti sia utile per capire che devi interagire con la stessa istanza per ottenere le proprietà che hai impostato...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7
    In altre parole, nel SET dai un nome ad un oggetto di tipo persona, ma nel GET stai interagendo con un NUOVO oggetto di tipo persona, ovvio che ti ritorna il default che hai impostato...
    Grazie per la risposta era proprio questo che avevo bisogno di chiarire, cioè che non si possono usare i dati nelle variabili (proprietà delle classi) se non attraverso la stessa istanza dove si sono impostate, infatti se in un'altra parte del programma (con un altro evento) si vogliono leggere le stesse proprietà come nel mio esempio con il pusante 'get' esse vanno necessariamente perse perchè si deve sempre usare la parola NEW instaziando un nuovo oggetto, tu hai giustamente aggirato l'ostacolo memorizzando in session il valore della variabile...
    ok thanks :-) saluti
    ps: nel video di esempio con visual studio non doveva per forza usare new e poteva leggere le proprietà forse è cambiato qualcosa o ho capito male l'inglese... boh.

  4. #4

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.