C# in Depth: What you need to master C# 2 and 3, 1st Edition

Author: Jon Skeet
All Stack Overflow 22
This Year Stack Overflow 4
This Month Stack Overflow 2


by anonymous   2019-07-21

Jon Skeet's "C# in Depth" is pretty good: http://www.amazon.com/C-Depth-Jon-Skeet/dp/1933988363/ref=sr_1_1?ie=UTF8&s=books&qid=1259183768&sr=8-1

by Earwicker   2019-07-21

I suggest: Books,Magazines,Journals,Code Samples,etc

Seriously, I suggest books and practicing. There are a lot of books to get you started, probably all much the same. Then when you've got the basics and want a quick guide to how it really all works, this one is rather good.

by anonymous   2017-08-20

I'm a fan of the CLR via C#, by Jeffrey Richter, a man very, very wise in C#-fu.

Also, check out our very own Jon Skeet's C# in Depth.

Both are great reads.

by Wedge   2017-08-20

As far as becoming proficient with C# I would highly recommend Programming C# and C# in Depth.

For Visual Studio, start poking around in the IDE a lot, play around, get familiar with it. Start with simple projects and explore all the different aspects. Learn how to optimize Visual Studio and get familiar with some of the great keyboard shortcuts / hidden features of the IDE.

Definitely do each of the following at least once:


  • Create a simple console application (e.g. hello world)
  • Create a class library (managed .dll) and use it from another application you create
  • Create a simple windows application
  • Create a simple asp.net web app


  • Debug a command line app
  • Get familiar with: breakpoints, the locals and watch windows, step over, step into, step out of, continue, stop debugging
  • Create a command line app which uses a function in a class library. Store the dll and symbol file (.pdb) for the library but delete the source code, debug through app as it goes into the library
  • Debug into a webservice
  • Learn how to use ILDasm and ILAsm

Command Line:

  • Get familiar with the Visual Studio command line environment
  • Build using only the command line
  • Debug from the command line using devenv.exe /debugexe
  • Use ILDasm / ILAsm from the command line to disassemble a simple app into .IL, reassemble it into a differently named file, test to see that it still works


  • Create unit tests (right click in a method, select the option to create a test)
  • Learn how to: run all unit tests, run all unit tests under the debugger, rerun failed unit tests, see details on test failures, run a subset of unit tests
  • Learn how to collect code coverage statistics for your tests

Source Control:

  • Learn how to interact with your source control system of choice while developing using VS

Refactoring et al:

  • Become familiar with all of the built-in refactorings (especially rename and extract method)
  • Use "Go To Definition"
  • Use "Find All References"
  • Use "Find In Files" (ctrl-shift-F)

IDE & Keyboard Shortcuts:

  • Learn how to use the designer well for web and winforms
  • Get very familiar with the Solution Explorer window
  • Experiment with different window layouts until you find one your comfortable with, keep experimenting later to see if that's still the best choice
  • Learn the ins and outs of intellisense, use it to your advantage as much as possible
  • Learn the keyboard shortcut for everything you do
by anonymous   2017-08-20

I have a little article about this: the Bluffer's Guide to C# 3. Obviously there are more details in my book but it should be enough to get you going. In short:

  • Automatically implemented properties:

    public int Value { get; set; }
  • Object and collection initializers:

    Form form = new Form { Size = new Size(100, 100),
                           Controls = { new Label { Text = "Hi" } }
    List<string> strings = new List<string> { "Hi", "There" };
  • Implicitly typed local variables:

    var x = new Dictionary<string, int>(); // x is still statically typed
  • Implicitly typed arrays:

    DoSomething(new[] { "hi", "there"}); // Creates a string array
  • Anonymous types:

    var jon = new { Name = "Jon", Age = 33 };
  • Lambda expressions (like anonymous methods but shorter):

    Func<string, int> lengthFunc = x => x.Length;
  • Expression trees:

    // Representation of logic as data
    Expression<Func<string, int>> lengthExpression = x => x.Length;
  • Extension methods: (static methods which act like instance methods on the type of their first parameter)

    public static string Reverse(this string text)
        char[] chars = text.ToCharArray();
        return new string(chars);
    string hello = "olleh".Reverse();
  • Query expressions:

    var query = from person in people
                where person.Age > 18
                select person.Name;
by anonymous   2017-08-20

You need knowledge about C# and .NET to developing ASP.NET apps or for SharePoint. Because both technology have same base and it's .NET

Head First C# for absolute beginner in programming (OOP) and C#. And it's good for you if you haven't knowledge about object programming, but if you familiar with OOP, this book wasting your time.

Best way how to get in .NET and C# is C# in Depth: What you need to master C# 2 and 3

by anonymous   2017-08-20

Read advanced books on the topic. Some examples:

Effective Java (2nd Edition) - Joshua Bloch

C# in Depth: What you need to master C# 2 and 3 - Jon Skeet

These two as examples provide you with the changes introduced in the last versions of the languages which should be enough to get you back on track combined with some sort of a pet project as mentioned by Pax.

I try to read some advanced books on languages which I don't use activly at the moment too, but this depends on my motivation..

With best regards