2009-11-10 3 views

Répondre

10

La seule façon de le faire est d'utiliser Nullable<T> - à savoir (en C#):

int? aInt; // defaults to null 

entiers réguliers ont aucune idée de null/Nothing.

+0

Sachez également que vous ne pouvez toujours pas faire si «Non aInt n'est rien» dans ce cas; vous devez faire 'If aInt.HasValue' à la place. –

+0

@Dan - peut-être pas en VB; mais en C#, vous pouvez utiliser 'if (aInt! = null) {...}' –

+0

Je suis assez sûr que vous pouvez le faire aussi en VB ;-) –

1

En C# vous devez utiliser int? au lieu de int. Les entiers sont des types de valeur et ils ne peuvent pas avoir une valeur nulle.

Avec int? vous pouvez vérifier la propriété HasValue pour vous dire que c'est quelque chose d'autre que null.

int? i = null; 

i.HasValue // false; 

pour obtenir l'utilisation de la valeur:

i.Value; 
1

Le nombre entier ne peut pas être "rien". Vous devez le déclarer comme suit:

dim aInt as Nullable(of Integer) 
4

Comme indiqué, utilisez int?/Nullable(of Integer). Faites attention à ne pas abuser, cependant. Je travaille sur un projet où presque tous les types de valeurs sont déclarés comme nullable /?, Et c'est un gâchis absolu.

+1

Je suis d'accord. Au début, quand ils sont venus, ils ont semblé vraiment doux mais maintenant j'ai tendance à ne presque jamais les utiliser. C'est un bordel avec tout le '.HasValue' et le typecasting qui est nécessaire. –

+1

Trop d'eau potable est dangereux, vous savez? Une fonctionnalité existe, ne signifie pas que vous devez l'utiliser partout. Les gens disent que la dynamique est mauvaise non pas parce que c'est mauvais, mais les gens l'utiliseront mal. Aucune offense signifiait cependant. Juste mes 2 cents. – Yogesh

+0

Je suis d'accord avec Yogesh. Le fait que les gens les utilisent mal ne signifie pas qu'ils sont mauvais. Utilisez-les uniquement si vous avez besoin d'une distinction entre une valeur de 0 et une valeur nulle. –

0

D'autres réponses sont bonnes, vous voudrez utiliser un type Nullable. Je voulais préciser la syntaxe pour VB/C# et version supporte:

VB9 + (Visual Studio 2008):

Dim aNullableInt As Integer? 

VB8 + (Visual Studio 2005):

Dim aNullableInt As Nullable(Of Integer) 

Alors que dans C# 2.0 (Visual Studio 2005) vous pouvez déjà l'écrire dans les deux sens:

int? aNullableInt; 
Nullable<int> aNullableInt; 
Questions connexes