Where can a C++/Java developer find C# learning materials? - c#

I have a background of programming in Java and C++, so I know all about basic logic and OOP. However I'm at a new job and they are a C# coding company.
Are there any good tutorials/examples out there that show the specific differences between these languages, or at least show me the features of C#?
I briefly looked at the MSDN and looked over their 'intro to C#' but that was way too basic for my needs. Will I just have to poke around the MSDN a little more in depth and come up with ideas on my own about little test projects to get my feet wet in C#?

MSDN has their Ramp up website - http://msdn.microsoft.com/en-us/rampup/default.aspx
Specifically for Java developers - http://msdn.microsoft.com/en-us/rampup/bb421266.aspx

These links sounds promising:
C# from JAVA
C# from C++

I would actually recomend the MSFT study guide for the 70-536 exam.
http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-536/dp/0735626197/ref=sr_1_1?ie=UTF8&s=books&qid=1245687096&sr=8-1
It'll give you a good overview of .net & c# without pretending you are a high school kid who knows nothing about compilers.

try one of these books you won't regret it:
Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition
or
Accelerated C# 2008

The video tutorials on http://www.asp.net/learn are invaluable for asp.net programming.

If you went to Learn Visual C# and found none of the resources to be useful to you, including the books, then you're doing pretty well - get to work!

.NET Book Zero by Charles Petzold.

Related

Sharepoint development in what language?

I know this might sound a little silly. but I'm confused as to what language does sharepoint code behind uses? do they use vb or c#? or is it possible to use either? thanks in advance.
C#.
You CAN use any .net language that you want of course, but the vast vast majority of SharePoint books, documentation and Code Samples are in C#. The official Microsoft SharePoint SDK Samples is only in C#.
You really want to use C# if you have to develop for SharePoint, especially if you're just starting.
You can use any language supported by the .NET Framework, Visual Basic and C# included.
You'll never know for sure. It could be any language that can compile into a .Net assembly. I think the advice here is that it is most likely C# but it would be hard for someone to say definitely that every code behind in the product was written with C#.
In short, write with what you know and like. If you are just learning and don't have a preference, stick with C#.
Lets just say 9 out of 10 uses C# as the code behind although this is not proven. But that's the way how I rate it in terms of community, samples and all the persons I know. Haven't seen somebody to use VB as codebehind yet but I'm sure there is. It would actually depend on what language you are comfortable it has no actual requirments for the code behind for as long as it is in .Net :)
I have seen some vb.net codebehind, but honestly that was more to show that they could also write it in vb.net than out of a preference. I started in vb.net when .net just surfaced and I must admit that I changed to c# after 3 months and I never regretted that afterwards :)

Time to transfer skills to java and resources

I'm thinking about learning Java. I'm already a more than competent c# developer. Has anybody else been in a similar situation? Roughly how long (whilst doing a typical 9-5 job) did it take you to transfer your skills? What resources would you recommend?
(When talking about resources, I specifically mean resources aimed at developers who want to learn Java, not newbie material)
I studied Java at university, and did c# at work.
You will find the Sun Java API (Javadocs) to be very informative and will help you dearly. You can find it here. This website should be the first to consult if you need a query, as it is brief, and up-to-date - similar to the MSDN Library for c#.
Also, Java has a strong community who will be willing to help # the forums.
Finally, I think its best to learn Java through practice and experimentation over theory. You will need a good IDE to start you off and there are plenty to choose from. Eclipse and Netbeans are notable Visual Studio contenders, but personally I prefer JCreator(albeit the version with intellisense is not free). It maybe text based, but you have greater control IMO.
If you are going to create GUI applications, then you should learn about swing. Again, the guys at sun provide excellent tutorials on the matter.
There are also books:
Java in a nutshell is a nice book. Click for google preview.
Java: the complete reference By Herbert Schildt is one I would highly recommend. Google Preview.
I'd recommend these books:
Effective Java (Joshua Bloch)
Core J2EE Patterns (Deepak Alur; John Crupi; Dan Malks) - sort of out of date, but still useful for understanding the history of J2EE. A lot of this is still applicable.
Concurrent Programming in Java (Doug Lea) - good guide to Java threading
Here's a more comprehensive list:
http://www.javalobby.org/articles/5books/full.jsp
It shouldn't be a difficult switch. Java is pretty much a subset of C# (Operationally) since C# was a Java clone that has mutated since it was split. (Everyone here remember the fiasco when MS tried to embrace java by modifying it so it would only work with windows, was sued by Sun and then made J++ and C# instead?)
The biggest difference will probably be the libraries, but if you are proficient at C#, then you shouldn't need to do anything more than study the Javadocs to pick up the new libraries.
EE might be a bit of a jump, but that's a whole 'nuther world.
For me, the nicest thing about Java is the minimal syntax. There are very few surprises or tricky parts to remember (Well, Generics have a kind of tricky syntax to implement, but using them is pretty straight-forward). If you agree with this or not--it does tend to make the learning curve a bit more shallow.
I started in Java and went to C#.
I will be honest with you; going back to Java won't be so easy, depending on how you started. It's going to change your world a bit. J2EE is quite different from ASP.NET, even though it looks a bit the same. Forget lots of things you used to hold dear, like == of strings, and switch on strings, and properties, and other such nicities. Oh, and prepare to be welcomed by checked exceptions.
Don't get me wrong, I love Java, and it's a great language, but you'll need be wary of the differences.
I would say a fun way to learn would be to write a program simultaneously in Java and C#, and see how you would do each thing, and note the differences.
I think you may find books hard to read, as they'll cover the basics, which will be boring for you, so you may skip critical things.
Learn by doing :) That is my approach.

What's a quick way to familiarize myself with C#, .NET framework, etc?

I just graduated college and will be starting working in about a month and I was asked to familiarize myself with C++, C#, .NET framework for NT Services and web services.
I'd appreciate recommendations on how to familiarize myself with these topics (books? internet links?) in a short time span. I don't expect to be an expert on it in a month but I don't want to be clueless either. I already know C++ and I consider myself to be fairly proficient in it and I know the basics of C# even though I haven't used it all that much. For C# I do own a book called O'Reilley Programming C#.
Thanks!
I would start by pulling down Microsoft's Visual Studio Express products. Your O'Reilly book is a perfectly good book to start with.
Start reading blogs and listening to podcasts, to begin to familiarize yourself with all of the technologies out there that surround c#. You will be very excited about what you can learn. Here are some of the better ones:
http://www.hanselminutes.com/
http://www.dotnetrocks.com/
http://channel9.msdn.com/
http://weblogs.asp.net/scottgu/
http://weblogs.asp.net/
In addition, the MSDN library is an invaluable resource. You can almost always find what you need there. This is where the reference for the entire .NET framework lives.
http://msdn.microsoft.com/en-us/library/default.aspx
Happy hunting!
Nothing beats actually using the language. As much as some of the information sources already quoted would be very useful to check out, I'd say make sure that you at least try and write some concrete C#.
The best place to start might be a non-trivial-but-not-too-large application that you have already written in something you know, and try to convert it to C#... even better if you can get somebody proficient in C# to peer-review your results to make suggestions where you could make better use of the language-specific features that may be new to you.
Fundamentally, if you just read books and watch videos, you may feel like you actually know it, but it is nothing like doing it yourself (as my Uni maths classes taught me... a good teacher can make the impossible look trivial on a blackboard).
That is a huge surface area. Pro C# 2008 and the .NET 3.5 Platform by Andrew Troelsen is a good place to start.
These are good podcasts that will give you an overview:
.NET Rocks
dnrTV
Herding Code
Microsoft Labs and Webcasts
Here's a good SO thread with lots of resources. I recommend you check out MSDN Virtual Labs. They have lots of great training that let's you get your hands on the technology, in particular, check out the C# ones.
I was in the same situation in late November 2008.
If you are familiar with IDEs and another programming language, download Visual Studio Express and start playing with it. It's free :)
http://www.microsoft.com/express/
And I always recommend this webpage:
http://www.java2s.com/Tutorial/CSharp/CatalogCSharp.htm
You can select the relative topic you are interested on this stackoverflow site based on the tag name, and read through some posts, it will give you a good feeling what are common issues/challenges people face in day-to-day programming.
One way is listening to podcasts. We do one called Deep Fried Bytes that contains a variety of topics on any and everything.

First "programs" in a non-web environment

I'm starting to re-skill myself in Desktop applications. I've been doing Web applications for a few years now.
I've got come decent C# books that I am going through, but they are more like language references. What I would like is a list/site/book with practical exercises, preferably graded in terms of difficulty.
They don't necessarily have to be from a C# site, either, but that would of course be advantageous.
Do you know of any resources like this?
On the topic of learning C# language itself and the runtime, I would recommend the Learn C# section on the MSDN. There are links to lot of articles and trining materials abtou C#. You can combine this with Jesse Liberty's Learning C# 3.0.
On the topic of desktop programming, the answer depends on what platform you would like to use.
If you want to target WPF, I'd recommend Petzold's Applications = Data + Markup. (As a side note, learning WPF would give you the basis to learning about RIA with Silverlight)
If you want to target WinForms... well, I am biased and would recommend against. But if you insist, Petzold's Programming Microsoft Windows Forms is another good book. :-) Chris Sells' Windows Forms 2.0 Programming also is very good book about WinForms.
The WindowsClient.net Get Started and Learn sections have a lot of training videos, articles, FAQ and samples for both WinForms and WPF. The Community Books section also has an extensive list of books on both technologies.
There are a lot of good C# tutorials on C# Practical Learning, ranging across several topics.
I also recommend Head First C# if you want to try a non-reference book.

from C++ to C#

What are good c++ to C# articles/tutorial or books?
I am reading http://msdn.microsoft.com/en-us/magazine/cc301520.aspx and will read http://andymcm.com/csharpfaq.htm and http://www.ondotnet.com/pub/a/dotnet/2002/02/11/csharp_traps.html afterwards. Have any of you read any good books for ppl who have a strong understanding of programming && || C++ on the C# language (and libraries)?
It would be helpful to have the C# Language from Microsoft (not ECMA) specification with you to guide you with the syntax changes between C++ & C#.
download C# Version 3.0 Specification (.doc) here
Absolutely the best place to find information about C# is MSDN.
I recommend you follow the C# tutorials listed here: C# Tutorials on MSDN
I was also a C++ dev before I started doing C#. Those tutorials will get you up to speed.
Read about .NET as well.
Also, I forgot to mention the specification:
C# Language Specification on MSDN
It's worth reading through so you know some of the not-so-obvious differences between C# and C++ (for example, structs are pass by value whereas classes are pass by ref), and usage of 'out', 'ref', and other keywords. Just an example :).
I am currently reading Jon Skeet's C# in Depth. It is the best treatment I have seen for C# 2 and 3. If you are an advanced C++ programmer and you have some familiarity with C#, this is the book to take your C# competence to mastery.
Jon provides insights into the evolution of C# and insights into the various new language features. Not just the "hows" but also the "whys". Again, approach it after reading a beginning C# book. It doesn't cover the basic stuff which is covered many times by numerous other C# books.
I'll second the suggestion for CLR via C#, it is without doubt one of the de facto books one would expect any competent C# programmer to have read. Also, coming from a C++ background it will answer your questions about how things work in a managed environment.
I often find that personal experience provides the most insight into language differences. One can read all the theory written about a new programming language, but without experience this doesn't help much.
I'd recommend downloading Microsoft Visual C# Express Edition (http://www.microsoft.com/express/vcsharp/) and trying it out with a few simple programs. Start with "Hello World!" and work your way from there. (I know this can be tedious, but it helps to build a solid grounding in a language you are unfamiliar with). Once you have a solid feeling for the language, you should be able to focus your efforts (and questions) toward more specific language differences.
I recommend Accelerated C# book for programmers who's came from C++ and Java Languages.
Personally when I had to learn C# I would type the name of what I was looking for in the C++ term and tack on C#. For example:
std::vector C#
which gave me several pages dedicated to explaining lists and other types in C# that did what that exact code did in C++. Worked fairly well, even for some of the lesser used parts of the STL/Templating library.
If you're coming from C++, I think the best book to start with is CLR via C#. It will give you both a solid introduction to C# while also acclimating you to life in the CLR. The latter may be more of a stumbling block for someone with a solid C++ background.

Categories