As New - Variablen übergeben

02/03/2008 - 12:33 von Thomas Hübner | Report spam
Hi NG,

Vermutlich eine blöde Frage. Ich habe mir zur Feiertags-,
Werktagsberechnung eine Klasse erstellt. Soll sowas wie eine eierlegende
Wollmilchsau sein. Es funktioniert auch alles wie es soll:

Sub t()
Dim ab As FeierTage = New FeierTage
ab.Jahr = 2008
ab.startDate = DateSerial(2008, 1, 1)
ab.endDate = DateSerial(2008, 12, 31)
ab.Bundesland = "BY"
MsgBox(ab.Arbeitstage5)
MsgBox(ab.Feiertage)
MsgBox(ab.ChristiHimmelfahrt)
MsgBox(ab.Aschermittwoch)

End Sub

Ich hàtte jetzt aber gerne die 2 Variablen (Jahr, Bundesland) schon im
New zwingend und die 2 Variablen (startDate, endDate) optional byVal
übergeben. Wie stell ich das an? MSDN habe ich schon gewàlzt aber weis
nicht so recht wonach ich suchen soll.

Dim ab As FeierTage = New FeierTage(2008,"BY",DateSerial(2008, 1,
1),DateSerial(2008, 12, 31))

Ich habe mal den Kopf der Klasse angehàngt (da hàngt noch wesentlich
mehr unten dran)

Public Class FeierTage
Private _Jahr As Integer = Date.Now.Year
Private _startDate As Date = Date.Now
Private _endDate As Date = Date.Now
Private _Bundesland As String = "ST"

''' <summary>
''' Start Datum für alle Berechnungen über eine Zeitspanne.
Standardwert ist Heute()
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property startDate() As Date
Get
Return _startDate
End Get
Set(ByVal value As Date)
_startDate = value
End Set
End Property
''' <summary>
''' End Datum für alle Berechnungen über eine Zeitspanne.
Standardwert ist Heute()
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property endDate() As Date
Get
Return _endDate
End Get
Set(ByVal value As Date)
_endDate = value
End Set
End Property
''' <summary>
''' Das Jahr dem ALLE Berechnungen dieses Objektes zugrunde liegen.
Standardwert aktuelles Jahr
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property Jahr() As Integer
Get
Return _Jahr
End Get
Set(ByVal value As Integer)
_Jahr = value
End Set
End Property
''' <summary>
'''Bundesland für die Feiertagsberechnung
''' </summary>
''' <value>STRING:
BW,BY,BE,BB,HB,HH,HE,MV,NI,NW,RP,SL,SN,ST,SH,TH</value>
''' <returns></returns>
''' <remarks>
''' ''' <example> Beispiel für die <c>Bundesland</c> Eigenschaft.
''' <code>
''' Dim ft As New FeierTage
''' ft.Bundesland = "BY"
''' </code>
''' </example>
'''</remarks>
Property Bundesland() As String
Get
Return _Bundesland
End Get
Set(ByVal value As String)
_Bundesland = value
End Set
End Property
 

Lesen sie die antworten

#1 Thomas Hübner
02/03/2008 - 13:24 | Warnen spam
Thomas Hübner schrieb:
Hi NG,

Vermutlich eine blöde Frage. Ich habe mir zur Feiertags-,
Werktagsberechnung eine Klasse erstellt. Soll sowas wie eine eierlegende
Wollmilchsau sein. Es funktioniert auch alles wie es soll:

Sub t()
Dim ab As FeierTage = New FeierTage
ab.Jahr = 2008
ab.startDate = DateSerial(2008, 1, 1)
ab.endDate = DateSerial(2008, 12, 31)
ab.Bundesland = "BY"
MsgBox(ab.Arbeitstage5)
MsgBox(ab.Feiertage)
MsgBox(ab.ChristiHimmelfahrt)
MsgBox(ab.Aschermittwoch)

End Sub

Ich hàtte jetzt aber gerne die 2 Variablen (Jahr, Bundesland) schon im
New zwingend und die 2 Variablen (startDate, endDate) optional byVal
übergeben. Wie stell ich das an? MSDN habe ich schon gewàlzt aber weis
nicht so recht wonach ich suchen soll.

Dim ab As FeierTage = New FeierTage(2008,"BY",DateSerial(2008, 1,
1),DateSerial(2008, 12, 31))



OK - habe einen Konstruktor gebaut:
'Konstruktor
Public Sub New(ByVal Jahr As Integer, ByVal Bundesland As String)
_Jahr = Jahr
_Bundesland = Bundesland
End Sub

Wenn ich aber nun noch "optional byval Startdatum as Date" einbringen
will wird vom mir eine Konstanter Wert verlangt. Am liebsten hàtte ich
"optional byval Startdatum as Date = Date.Now" Das geht aber nicht da
Date.Now kein Konstanter Wert ist. :-(

Ähnliche fragen