V.NET: Classe che ritorna sempre 0 (zero)

domenica 18 luglio 2010 - 23.07
Tag Elenco Tags  .NET 3.5  |  Windows Vista

Exeter Profilo | Newbie

Buonasera a tutti: so che non scrivo molto, ma preferisco esercitarmi in VB.NET e, data la mia inesperienza, non riuscirei a contribuire allo "sviluppo" (mai termine fu più appropriato) della community.
Vi scrivo per chiedervi un'aiuto.
Come esercizio sulle classi, sto cercando di creare un oggetto "persona" (che fantasia, eh?), implementando le seguenti proprietà, che mi servono x calcolare l'irpef, dato un reddito:
- Il suo reddito
- Se è sposato
- Quanti figli ha

Ora: ho pensato che la proprietà "isSposato" mi deve ritornare un boolean (dato che: o sei sposato, o non lo sei): se sei sposato, detrai 690 € dall'importo dichiarato dall'utente, altrimenti 0. Non è una mia "fantasia", sono i calcoli che qualsiasi ragioniere deve fare x calcolare l'irpef corretta (690€ è la detrazione x coniuge a carico).
La classe è questa:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Ho richiamato la classe nel form in questo modo, tramite un button e 2 radiobutton:
Dim soggetto As New Persona If RadioSingle.Checked = True Then soggetto.issposato = False End If If RadioSposato.Checked = True Then soggetto.issposato = True End If MessageBox.Show("Detrazione: " & soggetto.detrazioneConiuge.ToString())
In esecuzione, "detrazioneConiuge" risulta sempre 0 (zero): questo è il problema.
Ok: potreste gentilmente spiegarmi dove sbaglio e come correggere l'errore?
Grazie in anticipo.


AntCiar Profilo | Expert

> Public Function Sposato() As Boolean
> Dim objPersona As New Persona
>
> If isSposato = True Then
> Return True
> statoCivile = True
> objPersona.detrazioneConiuge = 690
> End If
>
> If isSposato = False Then ' se
> Return False
> statoCivile = False
> objPersona.detrazioneConiuge = 0
> End If
> End Function

ciao . L'errore sta proprio in questa funzione perchè inizializzi un nuovo oggetto "persona" cosa che non devi fare. Cambia questa funzione con quanto segue e vedi che funziona tutto:

> Public Function Sposato() As Boolean
> If isSposato = True Then
> statoCivile = True
> detrazioneConiuge = 690
> else
> statoCivile = False
> detrazioneConiuge = 690
> End If
> return isSposato
> End Function
Cristian Barca

Exeter Profilo | Newbie

Purtroppo, non funziona, anche se ho letteralmente copiato/incollato il codice nella classe e nel Form.
Faccio una domanda idiota: qualcuno sarebbe così gentile da "testare" la classe sul proprio PC, trovare il modo di farla funzionare a dovere, quindi pubblicare sul forum 'sto benedetto codice? Sono 2 giorni che mi fa impazzire

AntCiar Profilo | Expert

Ciao. Scusa ma mi era passato sotto gli occhi l'altro errore e non me ne sono accorto.

Praticamente tu valorizzi la property IsSposato con il valore del check di una RadioButton.

Poi nella funzione Sposato controlli il valore di StatoCivile che nessuno cambia e quindi, indipendentemente dal valore di isSposato, rimane sempre False.

Comunque ti ho allegato un piccolo progetto in VS2005 con la tua classe corretta. Ti ho anche messo una seconda classe "Persona2" che contiene le stesse cose ma, secondo me, un po più "funzionale".

PS. Il file allegato è con winrar. L'estensione è zip ma è stato rinominato da un .Rar

Ciao
Cristian Barca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5