It really depends on what you know, and what you want to do with it.
If you know VB at or before V6, then you will have a large amount to learn to move to later versions (VB under .NET) as the framework is enormous! Easy to use, but enormous...
VB for the .NET framework works well, and it in common use, but there is a fair amount of prejudice against it - C# is also in good usage.
If you want to do this for a hobby, then I would suggest download a free copy of Visual Studio 2010 for C# from Microsoft, and get a book and follow it. The main reason is that if you are moving from a pre-net VB to C# then you don't try to take the baggage of non-.NET VB with you!
If you want to do this for work, then you need to look at your local job market and see what is being recruited. Than make your decisions from there.
After your suggestion, I have checked for C# code. I feel it is nearer to C++ code. Actually, I have done some programming in C++, and much more in C.
Having said that, i want to ask...,
1. Do you mean that VB DOT NET is so much different from VB 6 that a VB-6-knower should go for a new language like C# rather than VB DOT NET. (Actually, your this sentence "The main reason is that if you are moving from a pre-net VB to C# then you don't try to take the baggage of non-.NET VB with you!" was not clear to me).
2. I would also like to know what are prejudices against VB DOT NET as mentioned above by you, and how C# bypasses them, if applicable.
3. Also if you are talking about c# with dot net framework, then does your stmt still holds that you will have a large amount to learn since framework is enormous, OR there is some relief in C#'s case as compared to VB DOT NET.
4. Please also tell me whether a program written for DOT NET framework has all similar properties after compilation irrespective of which programming lang was used OR its some properties still depend upon language used.
5. What is the advantage of C# DOT NET over VC++ in terms of usability, and what is the basic difference between the two, since I see both are based on C++ and both are Microsoft's versions?
Thanks and Regards.
0) C# is closer to C++ than to VB in many ways - and that is generally seen as a good thing, because it includes things like strong typing. However, it is a much simpler version (most of the time) with a clean syntax. I wouldn't argue that it is as powerful as C++ (it isn't) but it is a lot easier to remember (because there is a lot less of it) and (generally speaking) less prone to memory problems. If you know C, then you can think of it as C on steroids with all the pointers hidden!
1) Pretty much all the things you could do in VB6 wyou can still do in VB .NET - which is a bad thing because largely the .NET framework provides alternatives which are better for reliability. If you are used to VB6, then the automatic reaction is to use the older constructs. Which means that horrible stuff like ON ERROR still work, but ignores the much, much more helpful exception handling that is built in to .NET
2) There is a view that VB is a "kids language" and that only childish programmers use it. That being made to work on VB projects is a form of corporate punishment. It's not entirely correct - VB.NET has been described as "C# without the curly brackets" - but there is an element of truth there, because VB.NET is based on a language that is nearly 50 years old, and has been twisted so often that it does creak a bit. In comparison, C# was designed from scratch about ten years ago to be a fully object oriented language, with the .NET framework very solidly in mind.
3) Sorry, but yes. C# and VB.NET both use the same framework, and it is absolutely huge! You said you have done some C++ - did you use the Microsoft Foundation Classes? Because they were big. But tiny in comparison! Surprisingly, that is also one of .NETs strengths - there is a huge library of easily available code to handle all the boring stuff. You need a lnked list?
List<string> myList = new List<string>();
Dim myList As New List(Of String)()
Done - now move on to use it, rather than worry about the mechanics of setting up the pointers and testing the links. Need a stack now? Same thing, but with Stack instead of List. Queue? Button? Serial Port? Progress bar? Database? (Actually that last one is a lie - you need at least three lines to do anything useful with a database, not just one)
It's is huge - but it';s also very, very handy - and the Intellisense built into Visual Studio helps you with it, so you actually have to remember less than you did with MFC. And (pretty much) it's consistent. The same operations work the same on different objects.
4) All .NET languages compile to the same code. Even COBOL.NET exists (why, I cannot say) and all modules written with any .NET language can be used seamlessly within any other .NET language. That means that you can write the Presentation layer in VB, the Business layer in C++ and the Data access layer in COBOL and it will all work together. You cannot tell which language was used before compilation.
5) C# is not based on C++. Or C. It looks like it, a lot, but it isn't at all the same. In C# everything (and I mean everything) is an object, with properties, and methods and events, and so forth. This includes integers, characters, and Sql Databases! C# makes it difficult to use true pointers - you have to declare the block of code that uses them as "unsafe" before it will let you. And load of other little differences. C# is .NET - C++ can be .NET or Native code. The later is faster to execute, but you lose the .NET libraries.