Heh, I was a .NET supporter in the beginning also but as I've gotten further I can see more and more why write once run anywhere is a benefit.
Also when you start working with other people you'll sometimes wish for a restrictive language, it's all fun and games while it's just you but once you start working with different people all the ugliness comes to surface.
For example was working on a project with a guy the other day in VB.NET, when it came to us combining our projects, his project had public variables shared among many classes, he used "modules" left and right, every single control object on the GUI has names like TextBox1, etc., once again he mostly declared variables as Dim obj = Datetime.Now, and when I ask: "Why don't you explicitly specify types in the declaration" he seems confused by what I said, it's just terrible when you have to fix code that's written like that. (And yes I had to fix because he couldn't figure out what was wrong

)
Where and what you studying?
Honestly, I hope it's better in the industry but I've been tutoring for 2 years now and I can honestly say that I'm glad for restrictions, people pick up habits and when you mark practicals and help students with practical you realize just how little they know about what they did, it's scary, + they pick up those habits early on. It's especially problematic in .NET, people declare variable without specifying a type and don't understand what's happening, those features are aimed toward beginners I guess but I think only a seasoned developer should be using them. There's nothing more annoying than encountering a 2nd year student that doesn't understand that .NET/Java/etc. still passes by value (well of course it depends in .NET) and variable names are simply references
That's why I'm a staunch supported of Java for beginners.
Anyway my 2c.