PB. con classi shared

venerdì 05 maggio 2006 - 13.01

Babi Profilo | Junior Member

Ciao a tutti come faccio in una funzione shared di una classe a dichiarare una variabile
che mantenga il suo valore in tutta la funzione ?
p.s se la funzione non è share è suff. una dim all'interno della funzione stessa !!
grazie 1000

Cteniza Profilo | Guru

Dichiari un membro shared a sua volta.
Puoi farlo con una proprietà oppure direttamente con una variabile shared.

Babi Profilo | Junior Member

non ho capito. mi fai un esempio ?
grazie

Cteniza Profilo | Guru

Un metodo shared di solito è fatto così metto una piccola classe di esempio con i metodi Shared e una proprietà Shared
Imports System
Imports System.Data

Public Class ClsDati
Private Shared mDsDati As DataSet = Nothing
Public Shared Property DsDati() As DataSet
Get
If mDsDati Is Nothing Then
mDsDati = New DataSet("Dati")
End If
Return mDsDati
End Get
Set(ByVal Value As DataSet)
mDsDati = Value
End Set
End Property
Public Shared Sub CreateTable(ByVal pTableName As String, ByVal pColumnNames As String(), ByVal pTypes As Type())
Dim tb As DataTable = New DataTable
tb.TableName = pTableName
Dim x As Integer = 0
For x = 0 To pColumnNames.Length - 1
Dim dc As DataColumn = New DataColumn
dc.ColumnName = pColumnNames(x)
dc.DataType = pTypes(x)
tb.Columns.Add(dc)
Next
ImpostaDefault(tb)
DsDati.Tables.Add(tb)
tb.TableName = pTableName
End Sub

Public Shared Sub CreateIndex(ByVal pTableName As String, ByVal pColumnNames As String())
Dim keys(pColumnNames.Length - 1) As DataColumn
Dim k As Integer = 0
For k = 0 To pColumnNames.Length - 1
keys(k) = mDsDati.Tables(pTableName).Columns(pColumnNames(k))
Next
DsDati.Tables(pTableName).PrimaryKey = keys
End Sub

Private Shared Sub ImpostaDefault(ByVal pTable As DataTable)
Dim k As Integer = 0
For k = 0 To pTable.Columns.Count - 1
Dim dc As DataColumn = pTable.Columns(k)
If dc.DataType.Equals(GetType(System.Boolean)) Then
dc.DefaultValue = False
End If
If dc.DataType.Equals(GetType(Date)) Then
dc.DefaultValue = System.DateTime.Now
End If
If dc.DataType.Equals(GetType(System.Decimal)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.Double)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.Int16)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.Int32)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.Int64)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.Single)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.String)) Then
dc.DefaultValue = ""
End If
If dc.DataType.Equals(GetType(System.UInt16)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.UInt32)) Then
dc.DefaultValue = 0
End If
If dc.DataType.Equals(GetType(System.UInt64)) Then
dc.DefaultValue = 0
End If
Next
End Sub
End Class
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