The new forums will be named Coin Return (based on the most recent vote)! You can check on the status and timeline of the transition to the new forums here.
The Guiding Principles and New Rules document is now in effect.
I'm looking for a good book on C# that goes deep, and covers stuff from beginner to intermediate (or advanced). I tried looking on the big bookstore sites and amazon.com, but it's hard to tell anything from comments.
We use C# at work and recommend the book "Effective C#". It hasn't been updated to cover versions greater than 1.1, but if you are new to the language and want to know about when the right time to use structs versus classes is, how to properly implement the Dispose pattern, and a ton of other useful best practices, this is a nice book to go through. Not all of the items are useful, but there are enough good ones that I can recommend the book. Again, this book isn't going to teach you the syntax, but it will lead you down the right path once you do know the language.
I maintain that 95% of the learning curve of C# is learning the .NET Framework, and Microsoft has many training books on it.
Unfortunately I cannot recommend a specific one since I largely learned C# from modifying and maintaining existing applications rather than taking courses and doing tutorials.
I don't know. Microsoft has MSDN, which is a massive repository of documentation and articles, but your first steps should be learning to create basic programs (or web sites).
I learned most of what I know from presenting myself with challenges (eg: I want to connect to a database, what's the best way to do that) and then researching the problem thoroughly, writing code to do it, testing it, tinkering, etc. As you do your research you will uncover a lot of the framework. With .NET there's no less than 3 ways to do anything you can think of and the odds are that only a very small fraction of those ways are actually good in terms of performance and flexibility. God, there's like 90 billion ways to connect and retrieve data from a database.
Fortunately I work with a small platoon of MSCE's who I can bounce ideas and questions off of.
As far as good sites, asp.net is obviously a safe resource. There's a forum there and you're generally guaranteed a response for average questions within 24 hours.
The only time I have issues that I cannot solve by asking/MSDN, I go to asp.net.
I don't know what your learning type is, but if you're like me (aka you need to see someone progress logically from start to finish in one simple example in order to understand how the pieces fit together), Microsoft is seldom helpful on that except for their Hands-On labs.
These are the hands-on labs for C#. Try them, doing it from start to finish exactly as they instruct. Read it carefully, and it will explain why certain things are being done... if you're of the "see it, then do it" learning type, these hands on labs are little pieces of gold, and far more useful than the other documentation (or even books) that Microsoft often provides (which are notoriously poorly organized, especially for the "see it, then do it" types).
If you are a seasoned programmer but new to C#, just go straight to their Pro C# book.
I would not recommend getting a C# book for .NET 1.1, as .NET 2.0 was a pretty dramatic change and you will want to understand things like generics. However, anything 2.0 and up should be fine.
If you know programming, don't even bother with a book, unless if it's a style guide (Hlubocky's suggestion is a style guide, for instance). Usually there's no reason to buy a style guide either, unless you know you're going to be using the language a lot.
I've coded in C# just using MSDN's craptastic website, since it was needed for a project.
If you're learning C# of your own free will, I gotta ask, why?
If you know programming, don't even bother with a book, unless if it's a style guide (Hlubocky's suggestion is a style guide, for instance). Usually there's no reason to buy a style guide either, unless you know you're going to be using the language a lot.
I've coded in C# just using MSDN's craptastic website, since it was needed for a project.
If you're learning C# of your own free will, I gotta ask, why?
It probably depends on how well someone knows programming, but there's a difference between coding something up in C# and coding something maintenable, scalable and conforming to accepted C# standards. If this is for a hobby those aren't as important when getting your feet wet - but if this for your career, knowledge from the best books is very important.
If you know programming, don't even bother with a book, unless if it's a style guide (Hlubocky's suggestion is a style guide, for instance). Usually there's no reason to buy a style guide either, unless you know you're going to be using the language a lot.
I've coded in C# just using MSDN's craptastic website, since it was needed for a project.
If you're learning C# of your own free will, I gotta ask, why?
Because I like the IDEs for it (I'm using SharpDevelop), and the only programs I write never see the light of day. It's mainly for simplicity. If I were going to write something for distribution, I would probably go with C++.
If you know programming, don't even bother with a book, unless if it's a style guide (Hlubocky's suggestion is a style guide, for instance). Usually there's no reason to buy a style guide either, unless you know you're going to be using the language a lot.
I've coded in C# just using MSDN's craptastic website, since it was needed for a project.
If you're learning C# of your own free will, I gotta ask, why?
there's a difference between coding something up in C# and coding something maintenable, scalable and conforming to accepted C# standards.
I see where you're coming from falsedef, but I disagree with you. I think that learning is a very different thing for different people. Some people need to absorb a book to learn something new... and sometimes, even if you're not a "book learner", a book on a specific programming subject can teach you something that you might not run into if you were teaching yourself through other methods. It provides a very organized approach, and something that you can bring with you to the couch and learn, or on a bus, or what-have-you. I think books definitely have their place (if you're of the sort that can learn well through books), even if you're an experienced programmer.
Now as for me, I think the hands-on labs are the best alternative to a book: but that's just because it happens to fit my "monkey see, monkey do" style of learning. Yeah, I'm not one of the gifted people who can figure things out through improvisation, but it's how I roll (and how many other people roll, otherwise the Hands-on labs wouldn't exist).
Some people can just sit in front of an IDE with the help file open and learn a new language, and that's awesome and I respect that kind of skill. Some people can look at splintered fragments of code (such as MSDN provides) and piece them together in their head, and that's great too. But no one solution will work for everyone is what I'm trying to say here.
I think it's good for us to provide him with non-book alternatives, but outright discouraging from the use of a book could be counterproductive if it's the style of learning he's best at (and he tries to go against the grain of his learning style because it was implied that books are for unskilled programmers when, in fact, they're often designed for many people from novices to masters in their respective fields, and their use is only limited by how attuned you are at learning from books in general).
I don't have a problem with books. Style guides, which I keep mentioning in every post, is what more advanced programmers should buy. Nor do I have a problem with buying preeminent rule books for certain languages.
But C# is such a general language, and with so many similarities to other languages, that a rule book isn't necessary if you're already up to speed with popular languages. I'd say the same for Java, and I'm a huge Java fan. There's certain languages with preeminent books that everyone should buy, but I don't feel that way here. In all likelyhood, he'll just end up trawling the web for info.
I do see where you're coming from, and indeed style guides are quite useful. Your original reply made it sound like you didn't consider books in general to be useful (and that style guides were something you should get if you absolutely had to get a book), which was what I was disagreeing with. If that's not what you meant, that's my bad. I'm just of the opinion that there's a definite place for all kinds of books depending on if you get more information from reading a book than, say, following a tutorial or reading manpages etc...
The rule of thumb with programming textbooks has always been to buy the book written by the author of the language itself. That way you learn the syntax and oddities of the language, its strengths and preferred design and the philosophy behind it.
Hence, it was developed by Microsoft, headed by Anders Hejsberg, so looking him up on wikipedia I found this published work:
The C# Programming Language, Second Edition, Addison-Wesley Professional, ISBN 0-321-33443-4 , June 9, 2006
Posts
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
This is a pretty exhaustive chart of C# syntax.
I maintain that 95% of the learning curve of C# is learning the .NET Framework, and Microsoft has many training books on it.
Unfortunately I cannot recommend a specific one since I largely learned C# from modifying and maintaining existing applications rather than taking courses and doing tutorials.
we also talk about other random shit and clown upon each other
What was that site Microsoft set up that's like Sourceforge, but has .NET stuff? I forgot the name.
I learned most of what I know from presenting myself with challenges (eg: I want to connect to a database, what's the best way to do that) and then researching the problem thoroughly, writing code to do it, testing it, tinkering, etc. As you do your research you will uncover a lot of the framework. With .NET there's no less than 3 ways to do anything you can think of and the odds are that only a very small fraction of those ways are actually good in terms of performance and flexibility. God, there's like 90 billion ways to connect and retrieve data from a database.
Fortunately I work with a small platoon of MSCE's who I can bounce ideas and questions off of.
As far as good sites, asp.net is obviously a safe resource. There's a forum there and you're generally guaranteed a response for average questions within 24 hours.
The only time I have issues that I cannot solve by asking/MSDN, I go to asp.net.
we also talk about other random shit and clown upon each other
http://msdn2.microsoft.com/en-us/aa740375.aspx
These are the hands-on labs for C#. Try them, doing it from start to finish exactly as they instruct. Read it carefully, and it will explain why certain things are being done... if you're of the "see it, then do it" learning type, these hands on labs are little pieces of gold, and far more useful than the other documentation (or even books) that Microsoft often provides (which are notoriously poorly organized, especially for the "see it, then do it" types).
I can work out how something works by looking at it though. I'll look at code from Codeplex for that.
Thanks for the advice.
Check out http://www.amazon.com/Illustrated-C-2005-Daniel-Solis/dp/1590597230/ref=pd_bbs_sr_3?ie=UTF8&s=books&qid=1209000481&sr=8-3
If you are a seasoned programmer but new to C#, just go straight to their Pro C# book.
I would not recommend getting a C# book for .NET 1.1, as .NET 2.0 was a pretty dramatic change and you will want to understand things like generics. However, anything 2.0 and up should be fine.
I've coded in C# just using MSDN's craptastic website, since it was needed for a project.
If you're learning C# of your own free will, I gotta ask, why?
It probably depends on how well someone knows programming, but there's a difference between coding something up in C# and coding something maintenable, scalable and conforming to accepted C# standards. If this is for a hobby those aren't as important when getting your feet wet - but if this for your career, knowledge from the best books is very important.
Because I like the IDEs for it (I'm using SharpDevelop), and the only programs I write never see the light of day. It's mainly for simplicity. If I were going to write something for distribution, I would probably go with C++.
That's what a style guide would be for.
Now as for me, I think the hands-on labs are the best alternative to a book: but that's just because it happens to fit my "monkey see, monkey do" style of learning. Yeah, I'm not one of the gifted people who can figure things out through improvisation, but it's how I roll (and how many other people roll, otherwise the Hands-on labs wouldn't exist).
Some people can just sit in front of an IDE with the help file open and learn a new language, and that's awesome and I respect that kind of skill. Some people can look at splintered fragments of code (such as MSDN provides) and piece them together in their head, and that's great too. But no one solution will work for everyone is what I'm trying to say here.
I think it's good for us to provide him with non-book alternatives, but outright discouraging from the use of a book could be counterproductive if it's the style of learning he's best at (and he tries to go against the grain of his learning style because it was implied that books are for unskilled programmers when, in fact, they're often designed for many people from novices to masters in their respective fields, and their use is only limited by how attuned you are at learning from books in general).
But C# is such a general language, and with so many similarities to other languages, that a rule book isn't necessary if you're already up to speed with popular languages. I'd say the same for Java, and I'm a huge Java fan. There's certain languages with preeminent books that everyone should buy, but I don't feel that way here. In all likelyhood, he'll just end up trawling the web for info.
Hence, it was developed by Microsoft, headed by Anders Hejsberg, so looking him up on wikipedia I found this published work:
The C# Programming Language, Second Edition, Addison-Wesley Professional, ISBN 0-321-33443-4 , June 9, 2006
So this is what you should look at first.