Well, one example is that C# enforces strict type safety at all times
so you'll have to do a lot of casting & conversion operations that you
might not have had before, this is both a merit and a pitfall insofar
as that you may have to write some extra code, but that type safety is
ultimately a good thing.
Another example perhaps is that some people find C to be cryptic or
perhaps just difficult to read. This may be because the whole "C"
family substitutes symbols for a lot of words, I can't really tell
because I've been doing this for a while now, I've worked with a lot of
different languages and they pretty much all look the same to me now.
The tradeoff here is that C# code can be more concise, you can view
more C# code on screen at once because it's shorter.
One more thing to discuss is case-sensitivity. This makes VB
programmers especially nervous, but trust me it's not that bad and it
gives you more flexibility in choosing names for member variables.
In C#, you have to end each line of code (different from a line of
text) with a semicolon. So you have to type a lot of semicolons.
However, you can insert carriage returns in a line of code which can
make a lengthy call more readable. In VB.NET, you have to enter the
line continuation character '_' if you want to split lines.
So ask yourself, would I rather type a semicolon at the end of every
command? Or do I want to type an underscore every time I want a
command to span multiple lines.
In C# you also have more options for formatting in your code, this can
be a benefit or a curse as it can make code easier or harder ot read
depending one your perspective.
There are a few other technical differences but really nothing major.
I think if you are comfortable with VB.NET already you should be able
to get handy with C# in a couple of days with an ample supply of
coffee. The important thing, once again, is that you understand the
..NET framework.
There are other things to consider. Most modern languages, including
VB.NET and Java owe much of their lineage to C and it's progeny. It is
good to become familiar with the C-style syntax. Even a VB.NET
programmer is going to learn how to read C# eventually, so much of the
sample code you'll look at online is posted in both languages right
next to each other you're just going to absorb it naturally anyway so
you might as well take a direct approach and learn both.
If you learn C#, you should at least be able to read and understand
Java source code which is a useful skill for a developer these days
too.
Here's two examples, which one do you like better? Really, are they
even that different?
Sample VB.NET class:
Public Class VbNetClass
Private _alpha As String
Public Property Alpha()
Get
Return _alpha
End Get
Set(ByVal value)
_alpha = value
End Set
End Property
Public ReadOnly Property Beta()
Get
Return "Vb.Net is the best language. Semicolons are for fake-ass
hoes."
End Get
End Property
End Class
Sample C# Class:
public class CSharpClass
{
private string alpha;
public string Alpha
{
get { return alpha; }
set { alpha = value; }
}
public string Beta
{
get { return "You talk too much."; }
}
}