Discussione:
VB.Net Condivisione variabili tra istanze differenti della stessa classe
(troppo vecchio per rispondere)
Alessandro Fagioli
2003-07-22 10:55:01 UTC
Permalink
Sono appena partito col mio primo progetto VB.Net e volevo sapere se
era possibile condividere tra più istanze dello stesso oggetto il
valore di una variabile.
Esempio
Il mio obiettivo è far si che gli oggetti di tio clsBase abbiamo una
chiave univoca e sequenziale.
L'istanza 1 dovrebbe avere restituire Key="Key:0" mentre l'istnaza 1
Key="Key:1" ecc...
Chiaramente

Public Class clsBase
Dim m_sKey As String

ReadOnly Property Key() As String
Get
Key = m_sKey
End Get
End Property

Public Sub New()
Static Dim iKey As Short
m_sKey = "Key:" & CStr(ikey)
ikey = ikey + 1
End Sub
End Class

Dai miei ricordi di C++ questo era possibile e volevo sapere se lo è
anche col nuovo VB.Net.

Grazie
Alessandro
Luca Dormio
2003-07-22 11:13:14 UTC
Permalink
Post by Alessandro Fagioli
Sono appena partito col mio primo progetto VB.Net e volevo sapere se
era possibile condividere tra più istanze dello stesso oggetto il
valore di una variabile.
[SNIP]

Devi dichiarare una variabile di classe, ovvero in VB.NET una variabile con
la keyword Shared (static in C, da non confondere con lo Static di VB)

Il tuo esempio diventa quindi (con qualche altro fronzolo qua e la'):


Public Class clsBase
Dim m_sKey As String
Private Shared iKey As Short

ReadOnly Property Key() As String
Get
Key = m_sKey
End Get
End Property

Public Sub New()
'questo evita la creazione di una stringa temporanea
'rispetto al vecchio "a & b"
m_sKey = String.Format("Key:{0}", iKey)

'qui puoi fare a meno del cast a (S)hort se
'hai impostato Option Strict Off
iKey += 1S
End Sub
End Class

Ciao
--
Luca Dormio - ***@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown
Alessandro Fagioli
2003-07-23 13:35:42 UTC
Permalink
"Luca Dormio" <***@tin.it> wrote in message news:<bfj68k$fe1ss$***@ID-138791.news.uni-berlin.de>...
[CUT]
Post by Luca Dormio
Devi dichiarare una variabile di classe, ovvero in VB.NET una variabile con
la keyword Shared (static in C, da non confondere con lo Static di VB)
...
[CUT]


Grazie tante! Era esattamente ciò che cercavo.

nk6310i
2003-07-22 11:18:48 UTC
Permalink
Post by Alessandro Fagioli
Il mio obiettivo è far si che gli oggetti di tio clsBase abbiamo una
chiave univoca e sequenziale.
L'istanza 1 dovrebbe avere restituire Key="Key:0" mentre l'istnaza 1
Key="Key:1" ecc...
Dovresti usare una classe "superiore" che faccia da collection per le tue
clsBase, e questa dovrebbe occuparsi di tutti i problemi del tipo che hai
citato.
In modo da usare quelcosa come
MyIstance = BaseCollection.BaseClass(key)
Puoi anche semplicemente appoggiarti ad una HashTable (ti sconsiglio le
Collection perchè sono presenti solo per compatibilità con VB6)
No no no no, Zanna! Più semplcemente deve usare deve dichiarare la variabile
che vuole condividere Shared.

Ciaooo



--------------------------------
Inviato via http://usenet.libero.it
nk6310i
2003-07-22 11:19:44 UTC
Permalink
Post by nk6310i
No no no no, Zanna! Più semplcemente deve usare deve dichiarare la variabile
che vuole condividere Shared.
...come tra l'altro vedo ha già provveduto a consigliare Luca Dormio.

Ri-ciao

--------------------------------
Inviato via http://usenet.libero.it
nk6310i
2003-07-22 15:32:38 UTC
Permalink
Post by nk6310i
No no no no, Zanna! Più semplcemente deve usare deve dichiarare la variabile
che vuole condividere Shared.
E' un sistema un po' promisquo che non mi piace molto.
Ciao
Be fa parte dei "meccanismi" messi a disposizione dai linguaggi C# e VB.NET.
Probabilmente una cosa del genere c'è in Java ( bleahhh ) e in C++ ( eeeh se
avessi l'opportunità... )

Ciao

--------------------------------
Inviato via http://usenet.libero.it
hal1961
2003-07-22 17:21:35 UTC
Permalink
E' un sistema un po' promisquo che non mi piace molto.
Ma e' usato a squola :-PPP
--
ciao, hal
Loading...