views:

95

answers:

6

For example Dim aInt as Integer should have the value as nothing instead of 0.

+1  A: 

In C# you need to use int? instead of int. Integers are value types and they can't have a null value.

With int? you can check the HasValue property to tell you it is is something other than null.

int? i = null;

i.HasValue // false;

to get the value use:

i.Value;
Kevin
+10  A: 

The only way to do that is to use Nullable<T> - i.e. (in C#):

int? aInt; // defaults to null

Regular integers have no concept of null/Nothing.

Marc Gravell
Also be aware that you still can't do `If Not aInt Is Nothing` in this case; you have to do `If aInt.HasValue` instead.
Dan Tao
@Dan - maybe not in VB; but in C# you can use `if(aInt!=null) {...}`
Marc Gravell
I'm pretty sure you can do this in VB too ;-)
Meta-Knight
+4  A: 

You'll have to use a nullable type. In vb.net - Nullable(Of Integer) (or Short, Byte)

ScottE
+1  A: 

Integer cannot be "nothing". You need to declare it as:

dim aInt as Nullable(of Integer)
mlsteeves
+4  A: 

As mentioned, use int? / Nullable(of Integer). Be careful not to overuse, though. I am working on a project where almost all valuetypes are declared as nullable / ?, and it is an absolute mess.

hhravn
I agree. At first when they came they sounded really sweet but now I tend to almost never use them. It's a mess with all the `.HasValue` and typecasting that is needed.
Isak Savo
Overdrinking water too is dangerous you know? A feature exists, does not means that you have to use it everywhere. People are saying dynamic is bad not because it is bad, but people will use it badly. No offense meant though. Just my 2 cents.
Yogesh
I agree with Yogesh. The fact that people use them badly doesn't mean they are bad. Use them only if you need to have a distinction between a value of 0 and a null value.
Meta-Knight
A: 

Other answers are right, you'll want to use a Nullable type. I wanted to precise the syntax for VB/C# and which version supports it:

VB9+ (Visual Studio 2008):

Dim aNullableInt As Integer?

VB8+ (Visual Studio 2005):

Dim aNullableInt As Nullable(Of Integer)

Whereas in C# 2.0 (Visual Studio 2005) you could already write it in both ways:

int? aNullableInt;
Nullable<int> aNullableInt;
Meta-Knight