tags:

views:

64

answers:

7

Can i initialize var with null or some empty variable.

A: 

A var cannot be set to null since it needs to be statically typed.

var foo = null;
// compiler goes: "Huh, what's that type of foo?"

However, you can use this construct to work around the issue:

var foo = (string)null;
// compiler goes: "Ah, it's a string. Nice."

I don't know for sure, but from what I heard you can also use dynamic instead of var. This does not require static typing.

dynamic foo = null;
foo = "hi";

Also, since it was not clear to me from the question if you meant the varkeyword or variables in general: Only references (to classes) and nullable types can be set to null. For instance, you can do this:

string s = null; // reference
SomeClass c = null; // reference
int? i = null; // nullable

But you cannot do this:

int i = null; // integers cannot contain null
mafutrct
+1  A: 

Hi there.

Nope. var needs to be initialized to a type, it can't be null.

Cheers. Jas.

Jason Evans
Ding! Var is kind of like saying to the compiler "I don't feel like declaring this but you'll know" ... saying var whatever = null is like doing a headfake.
jeriley
+1  A: 

var just tells the compiler to infer the type you wanted at compile time...it cannot infer from null (though there are cases it could).

So, no you are not allowed to do this.

When you say "some empty value"...if you mean:

var s = string.Empty;
//
var s = "";

Then yes, you may do that, but not null.

Nick Craver
A: 

you cannot assign null to a var type.

If you assign null the compiler cannot find the variable you wanted in var place.

throws error: Cannot assign <null> to an implicitly-typed local variable

you can try this:

var dummy =(string)null;

Here compiler can find the type you want so no problem

You can assign some empty values.

var dummy = string.Empty;

or

var dummy = 0;
anishmarokey
+2  A: 

Why wouldn't this be possible?

var theNameOfTheVar = (TheType)null;

eg:

var name = (string)null;

Simple as that.

Snake
This is certainly a working solution, but I really can't come up with any reason to use it.
Fredrik Mörk
There is none. I'm just answering the TS' question :)
Snake
A: 

you can't initialise var with null, var needs to be initialised as a type otherwise it cannot be inferred, if you think you need to do this maybe you can post the code it is probable that there is another way to do what you are attempting.

Pharabus
+1  A: 

C# is a strictly/strongly typed language. var was introduced for compile-time type-binding for anonymous types yet you can use var for primitive and custom types that are already known at design time. At runtime there's nothing like var, it is replaced by an actual type that is either a reference type or value type.

When you say,

var x = null; 

the compiler cannot resolve this becuase there's no type bound to null. You can make it like this.

string y = null;
var x = y;

This will work because now x can know its type at compile time that is string in this case.

this. __curious_geek