2009-03-06 8 views
1

Comment définir une valeur NULL pour un paramètre DateTime facultatif dans un constructeur?Définition de SqlDateTime.Null dans un constructeur

J'utilise le constructeur suivant ci-dessous et je veux que le paramètre facultatif admissionDate soit un DateTime nul. Le définir sur Nothing lui donne réellement une valeur (quelque chose comme # 12: 00: 00 #). Normalement, j'utilise DateTime.MinValue pour représenter une date/heure nulle.

Public Sub New(ByVal obj1 as Object, Optional ByVal admissionDate As DateTime = System.Data.SqlTypes.SqlDateTime.Null) 

Répondre

2

Je suggère d'utiliser la solution de James Curran, mais utiliser Surcharger au lieu d'un paramètre optionnel, comme solution de contournement pour l'erreur que vous avez mentionné (« Les paramètres facultatifs ne peuvent pas avoir des types de structure »):

Public Sub New(ByVal obj1 As Object, ByVal admissionDate As Nullable(Of DateTime)) 
    //Your code here 
End Sub 

Public Sub New(Byval obj1 As Object) 
    Me.New(obj1, Nothing) 
End Sub 

Vous pouvez également utiliser DateTime? au lieu de Nullable (Of DateTime) dans la dernière version de VB (pas sûr des anciennes versions).

+0

J'ai fondamentalement utilisé cette solution avec une surcharge (deux constructeurs). Mais j'ai utilisé SqlDateTime.Null au lieu de Nothing. – spong

2

1

Avez-vous essayé DBNull.Valu e?

3

Vous aurez besoin d'un DateTime Nullable. En C#, c'est Nullable<DateTime> ou DateTime?. Je ne suis pas sûr de la syntaxe VB.NET, mais je pense que c'est quelque chose comme Nullable(Of DateTime)

Public Sub New(ByVal obj1 as Object, _ 
     Optional ByVal admissionDate As Nullable(Of DateTime) = Null) 
+0

Je reçois l'erreur: Les paramètres facultatifs ne peuvent pas avoir de types de structure – spong

2

System.Data.SqlTypes.SqlDateTime est pas le même datetime que builtin.

Vous pouvez utiliser ce type ou utiliser un datetime Nullable.

Questions connexes