>>This is the first in what I think will be a series of discussions relating to C#. I am immersed in learning it and know others are as well. Or already have, or are thinking about it. Generics and interfaces are a couple of topics I have in mind after I get a question that has been bugging me for a while out of my system. The answer is probably blindingly obvious to someone who already knows C#.
>>
>>Here is my question. When you instantiate an object, you do it like this:
>>
>>Circle cir = New Circle();
>>
>>Why does the class name occur twice? Why isn't the Circle() on the right sufficient to define the type of object being created?
>>
>>i.e. Why isn't it? ---
>>
>>cir = New Circle();
>
>It is how C# language defined. You first declare your variable's type then do an assignment.
>
>
Circle cir = new Circle();
>
>is the easier form of:
>
>
Circle cir;
>cir = new Circle();
>
>However in C# 3.0 there is type inference.
>
>
var cir = new Circle();
>
>IMHO it's weird from the start (C# 1.0) why you need to have type declaration when type could be inferred from constructor.
>
>PS: Maybe just because they couldn't think of a better way for intellisense.
>Cetin
But isn't this what strong typing is all about? Without declaring the variable type first, doesn't that imply weak typing?