Top products from r/csharp

We found 176 product mentions on r/csharp. We ranked the 178 resulting products by number of redditors who mentioned them. Here are the top 20.

Next page

Top comments that mention products on r/csharp:

u/ArmenShimoon · 7 pointsr/csharp

They seem a like reasonable starting point I think. Repetition is the mother of mastery, the more books the better (in addition to applying what is learned).

Since Mosh is calling out learning fundamentals as important to becoming a good C# developers, I would personally also recommend some general (non C# specific books) too for who are starting out in software development:

  1. Design Patterns (Amazon) - also known as the "Gang of Four" Design Patterns, it was originally published in 1994 and is still relevant today. When people talk about design patterns, they're referring to the book more often then not.

  2. Soft Skills (Amazon) - Not a book on programming actually... it's a software developers life manual. The reason I like this book is it covers the other parts of the life of a developer that I haven't seen covered anywhere else. Everything from learning strategies, time management, career advice, and even some health and fitness. It was an enjoyable read and I think other developers would enjoy it too.

  3. The Passionate Programmer (Amazon) It's been a while since I've read this one, but I remember it giving decent advice for building a career in software development. Not to be confused with The Pragmatic Programmer (Amazon) which should be read at some point too.

    There's a ton more, but those are a few that stood out to me. Essentially the more the merrier in my opinion - books, courses, videos, tutorials, and so on. The books I'm recommending here focus on adopting the developer mindset and being successful at it. That's part of the puzzle.

    The other part is understanding the technical details including the programming language and frameworks you intend to use.

    And finally, for learning about C#, I do highly recommend Mosh's videos/courses (some are free on YouTube, others available on Udemy). He's got a unique ability to explain things clearly and simply in a way that beginners can pick up quickly.

    What I'd do is check out his free content first, and if you agree his style is ideal for learning, an investment in one of his courses is well worth it since he'll cover a lot more breadth and depth on each of the topics and they're organized into a super consumable package rather than scouring the internet for various topics.
u/ThereKanBOnly1 · 3 pointsr/csharp

So I don't think you should get too hung up on "enterprise architecture" at the moment, partially because you're still very early in your career, but also because enterprise architecture means a lot of things to a lot of different people. At this stage in your career, I really think you should focus mainly on SOLID code, core Object Oriented design concepts, and then understanding patterns. Good architectural strategies are built around all of those concepts, but they're also much much more than that.

For SOLID code, one of my favorite references is actually Dependency Injection in .Net by Mark Seemann. Although he does spend a good amount of time on DI, the recommendations that Mark makes for how to properly structure your code in order to take advantage of DI are very useful in understanding SOLID oriented design principles in general. The examples and code really work through the concepts well, so you get a great explanation followed by some well thought out code.

Clean Code by Uncle Bob is a great reference on how to structure well thought out code that touches on some architectural principles, but doesn't have that as the main focus of the book. Many of the topics in the book you'll find need to be addressed throughout a codebase.

As far as design patterns (which are different then architectural patterns), I don't think you can go wrong with the original Gang of 4 book , although I personally have a C# specific version, C# Design Pattern Essentials. I don't want to put too much emphasis on design patterns, because sometimes they get overused and applied too literally, but they are still very useful. I think the key to design patterns is not just knowing what they are, but determining where they might be applicable to your use case, and whether you should make any small adjustments or tweaks to them.

After you really have a rock solid base of working with code, then you can shift your focus on more architectural concerns. For that, it really depends on what problem your looking to solve, but Domain Driven Design (DDD) is a good way about understanding those problems and to structure the solutions in a well thought out, loosely coupled, and evolvable manner. That "central framework" that you referenced in your post is the business logic, and its the key focus of DDD

u/Insindur · 13 pointsr/csharp

First off, well done on getting one of your first apps out there. It's always a daunting step, especially when you're a beginner.

Some general things that will help you improve your current design and any other app you choose to create going forward:

  • Learn about SOLID programming principles. I won't go into too much detail because there is a wealth of resources out there to explain the basics better than I ever could such as this. Once you understand what each of the letters in the acronym means, you can use it as a framework to assess your own design.
  • Design patterns can also be a valuable tool for a developer (though use with caution, if not used properly they can make your application needlessly complex). This site has some simple examples available specific to C#, but you might want to check out some material on object-oriented design first to get a better understanding of WHY we use patterns in the first place. The Head First series is quite a beginner friendly option in this regard Book 1 Book 2.
  • Take a look through the official Microsoft C# guidelines, I noticed a few instances where you could improve the readability of the code based on their checklist (using implicitly typed variables with the var keyword where applicable, using string interpolation etc, using auto-implemented properties for your classes, meaningful variable names etc).
  • Look up DRY (Don't repeat yourself), and KISS (Keep it simple, stupid), it will help you write shorter, clearer methods. I can see a few places in your code where you could decompose certain operations into separate methods.
  • Treat user-input as an unpredictable spawn of Satan that it is: using decimal.TryParse(...) instead of Convert.ToDecimal(...), try...catch blocks, you always want to validate user-input as far as humanly possible.
  • BONUS TIP (though some may disagree with me here): try ReSharper out, it will give you valuable suggestions while coding that you can otherwise miss. Even after 8 years of experience with C#, it helps me out tremendously.
u/mbrezu · 2 pointsr/csharp

Hmmm, I might be completely wrong (it's been a long time since my first CS course), but you shouldn't worry so much about the language.

I mean, if it's your first one, yeah, it matters more. But most imperative, C-syntax languages are very similar, even more so from a CS 101 perspective. So you could try to learn some Java (C# is a better Java :-) ) if you find resources more easily.

If you want to see what a real :-p CS 101 course looks like, check this out: (full text of the book available for free) and (videos from 1986 when this course was taught at HP IIRC and they recorded it). SICP is a really interesting and influential book, with a very interesting distribution of reviews on Amazon - mostly ones and fives, people seem to either love it or hate it. You might hate it, but you won't know unless you check it out ;-) I think it's best to try and watch one or two of the lectures to form a quick opinion.

Another language independent, important book is

My point is you shouldn't focus on a particular language or tech stack in college (you'll get to do that a lot on the job), but instead, try to study interesting stuff (which will help later as you'll be better equipped to recognize ideas, patterns and designs).

u/programmingwithwill · 1 pointr/csharp

I will agree that it isn't cheap but if you're serious about your professional development, it is well worth it. If you want to just try it out, they have a 10 day free trial.

To be honest, though, I'm not sure what you mean by "advanced topics and concepts." There are plenty of courses on PluralSight that I would consider advanced but it sounds like there is only one on there that interests you.

Regardless, if you are looking for something more intermediate, PluralSight has you covered. If you're looking for something more advanced than PluralSight can offer, maybe you should look into

Edit: I'd like to add that was on this subreddit the other day and seems like a pretty thorough list. Free courses and never as good as paid ones, though (in my experience).

u/srblan · 1 pointr/csharp

I'm 35, no degree, 2 young kids, little time to study. I had an interest in coding but have done nothing more than an intro to HTML/CSS and Javascript while in community college.

I got a job as a tester/DBA support. I expressed interest in learning to develop as we were short staffed (still are).

I started with, C# Beginner with Mosh. I liked this course but felt it was a bit disjointed. His lectures did not always cover the material used in his challenges, but I will go back into his other two courses eventually.
Next I watched the Bob Tabor videos others have mentioned. I liked these, they were a little more direct and showed more actual coding than the Mosh vids.
Third - I read the first 20 chapters of this book: (most of this would be a review, but I like seeing how other people teach the same material)
Now, I'm working through this book:

After this book, i will move onto Pluralsight.

I am very much still a beginner, probably still a year or more away from supporting our devs at work. But the best advice I got was to code every day. You won't learn it if you don't do it. I don't know if any of this will help you get "job ready" super fast, but its the advice I was given and I just wanted to pass it along.

u/DevOnTheLoose · 3 pointsr/csharp

Here are my two recommendations based on what you're starting with: - Beginning C# Object Oriented Programming by Dan Clark

It's circa 2013, but that shouldn't matter too much. The point of this book is to get you understanding the fundamentals which haven't changed a bit in a while. I can't speak to the effectiveness of this book, personally (I came from C++, so for me it was more about learning how inheritance patterns in C# differed and this book wouldn't have worked for me), but I've recommended it to other people looking to get a start in programming and it has been well received. The goal with this book is to get to the point where you can read a serious book on C# and this provides that pretty well.

After that, head right over to: C# 6.0 in a Nutshell - by Joseph Albahari and Ben Albahari (O'Reilly Press).

I own every edition of the C# in a Nutshell series and have read each (speed reader - lots of skimming/scanning since each edition has a lot of repeat content). I'm a huge fan of the "in a Nutshell" books - the "signal to noise" ratio of these books is very high - they're excellent books for people who prefer/are best at learning via books - think of it as an "AP Course". It'll take you a while to get through (the last guy who successfully completed both took 9 months front to back at about 20 hours a week using a strategy that involved reading the book about 4 times [topic for another post] -- it was for a job, so he had no choice but to learn). When you're done, though, you'll understand a large percentage of C# code and be able to write many different kinds of applications.

From there, it's time to head toward the particular discipline you'll be developing most frequently with (ASP.Net MVC, etc) or target certain areas (multithreading/thread safety is usually a good place to go next if you have no particular target).

u/kdawkins · 12 pointsr/csharp

Great question!

A lot of intro classes skip over the 'why' and 'how' of programming languages. Lets backup for a second - the purpose of a programming language (C#, Java, etc.) is to abstract away the actual machine code that runs on the hardware. It would be a very difficult and tedious task to write large applications in machine code. This is where the compiler comes into play; even though we have these great high level languages, hardware still only understand machine code. The compilers job is to take statements that we write in high level languages and turn them into machine code.

Now, keeping in mind the above - back to your question. All of the specific words you are wondering the meaning of are keywords the language has. They are reserved for a specific function/meaning and help the compiler understand various traits about the code you are writing (context, control flow, etc.).

String - A String is a type and a type describes to the compiler what kind of data you are working with. In this case, a string means text (words, sentences). That's why variables that are of type String usually have the " ".

Console - (I am assuming that you are referring to the class here) The console class is a group of methods that tell the compiler how to interact with output on a terminal (the black window with a blinking cursor). You can use any methods (like WriteLine) to tell the compiler what you are trying to accomplish. Classes like this save us a lot of time, there is no need to always re-invent the wheel and write I/O code.

Namespace - This is one of the context keywords I eluded too above, it tells the compiler the scope of variables and expressions that you are writing.

Main() - This is a method name! It is a very important method because it is the entry point for an executable!

? - This is the funny one - The question mark operator is actually shorthand for an if/else control flow fixture. If the variable to the left of it evaluates to true, the first expression is executed, otherwise the 2nd.

Pro Tip - MSDN is your friend! Microsoft has a lot of great documentation on C#... how did I find the above link? I googled "C# ? operator". Also, if your text book is not working out for you, see if your library has access to the C# 5.0 in a Nutshell book

u/FizixMan · 1 pointr/csharp

> Also, is there a name for a "non-local" function? I didn't know the difference between a local and "non-local" function since this is basically my first time hearing the term.

Uhhh... class... member... method? lol, I'm not sure. Up until C# 7.0 that introduced local functions, they were always just... well, "methods."

Maybe "instance method" and "static method" might be viable.

That MSDN link I included has examples of both regular and local functions.

Regarding code efficiency, don't worry about that. Try to make the code easy to understand, easy to change, and easy to debug first. I'm not sure of any resources off the top of my head that would be good for people learning. There are some books, Clean Code comes to mind. Some of the topics might go over your head a bit depending on how far along you are learning, but with any luck it'll help you perceive coding as a craft rather than just getting the correct output.

Maybe the next important leap you can take is to think about organizing your code into classes. That might help you better manage your code into smaller, single-responsibility parts that are easier to reason about and work with.

u/markdoubleyou · 3 pointsr/csharp

As others have mentioned, writing code is the best way to get exposure. But if you're a book guy like me then there are a lot of option out there that'll accelerate the process. You'd be insane to read all the following--these are just starting points that can accommodate different interests/tastes.

Having said that, I'll start with the one book that I think every C# developer should own:

Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries

... it's a good read, and it includes a lot of direct input from the designers of the C# and the .NET Framework. Microsoft has been really good about sticking to those guidelines, so you'll immediately get a leg up on the Framework libraries if you work through this book. (Also, you'll win a lot of arguments with your coworkers about how APIs should be designed.)

General knowledge books (tons to pick from, but here are some winners):

u/johnnydsick · 13 pointsr/csharp

I really enjoyed the C# Player's Guide. There's a newer version now but this is what I got.

Edit: I'm glad you guys liked this book as much as I did. To OP, I would offer two more suggestions.

  1. Clean Code This book is NOT specific to C#. However, it gives you a holistic understanding of how to write code that is readable and effective. This is how I was able to transition from writing code that simply functioned (primarily for school) to code that my coworkers could pick up and run with. The book is the bible of software style where I work.

  2. C# and the .NET Framework This is a very optional book in my opinion. It is also a little pricy, very long, more intermediate than beginner and you can gather much of its information from MSDN. However, I prefer looking things up and reading them in a book where possible. I also like having all this information in one location. When I have free time at work, I find myself more likely to flip to an unread section and skim over it than I would with the same information online.
u/The_Binding_Of_Data · 1 pointr/csharp

I found The C# Player's Guide (3rd Ed.) to be pretty solid at teaching the basics of the C# language. I particularly liked how they diagrammed the various data types.

Head First C# (3rd Ed.) was also good, but it's pretty out of date at this point. If you can use Visual Studio 2015 or earlier, you should still be able to follow along without too much trouble. After that, the templates they use for doing UI are no longer available, so you'd have to do some extra work there.

That said, Head First C# includes a lot more general Computer Science information the Player's Guide, and includes UI design and implementation.

I think one issue with hard copy books is that C# and .NET are evolving really really fast currently, which makes it hard to keep up to date.

As far as projects go, I totally know how difficult it can be to think of something when you're specifically trying to.

Several projects I've made ended up being due to some need. For example, I have a project idea I really need to get started at some point for a recipe book for Breath of the Wild. I want something light weight that I can use to record the recipes I find in game, as well as being able to store additional useful information (such as places where ingredients drop or can be purchased, purchase prices, etc).

Another project idea that I've played with a bit here and there is a basic character stat generator for an RPG. This is something that can be super simple, but can also be expanded a great deal into a complex program.

u/RedditWithBoners · 3 pointsr/csharp

I purchased TCP/IP sockets in C a while back, and at the time was working a job doing Linux network development. So, seeing the low-level APIs and diving straight into the work is what I recommend, but I know it's not the most accessible route. Unfortunately, I don't have any other book references as the majority of my understanding is documentation, blogs, and code. Honestly, my knowledge of sockets in Windows is far from complete.

There is a regular poster to /r/csharp who writes a series of articles and code about networking in C#. I believe he started from simply opening a socket, then continued onto TCP, UDP, and eventually creating a networked game. Surprisingly, I came across this when I was trying to find his posts. You might have better luck searching reddit (I only searched Google).

As for async, I purchased Stephen Cleary's book Concurrency in C# Cookbook and Alex Davies' book Async in C# 5.0, but I have barely cracked open either. :( Stephen Cleary's blog has a significant wealth of information on how async/await works, and things to do and avoid. Once you get over a few humps, MSDN's documentation is pretty thorough and readable as well.

Found the networking series I mentioned above -, written by /u/def-pri-pub.

u/Nugsly · 20 pointsr/csharp

I'm going to start by assuming this may be maintained by another person at some point in the future. First off, naming. Although it is kinda targeted towards Java, the majority is directly applicable to C#. Clean Code. The underscores and you prefixing an abbreviation for the type should be changed. An example would be:


Changes to:


because of the fact that it is a public property, and you've already told us it is an Int when you declared it. Doing this will allow others to maintain your code with less headache. is an MSDN article that goes over some of it.

Next, spaces in the folder names, you should avoid that for the same reason above, use PascalCase, no spaces, no hyphens, no underscores if possible.

You have no guard clauses in there. An example of adding one in would be (Line 31 'DataObjects.cs):

if (string.IsNullOrEmpty(displayLine1)) throw new ArgumentNullException("displayLine1");

Favor guard clauses over exception handling wherever possible. When you need to handle exceptions, handle them specifically. If the code you are calling can throw an InvalidOperationException, favor catching that over just Exception. Exceptions should be exceptional, not a common occurrence in your code, guard clauses help with that. Another example would be (Line 96 'Program.cs'):

if (File.Exists(s_directory + @"\Bricks.xml") { ...the rest of the code that uses that file here }

Use meaningful names. 'displayLine1' as a constructor parameter is ambiguous. Sometimes it makes sense to shorten some of the names as well; 'customerWhoPurchasedId' could just be 'customerId'.

In DataObjects.cs, you are returning '-1' as an error, I would use something more meaningful than a number. If you are going to use a number like that, use an enum so that you can read your code using friendly names, '-1' is ambiguous, but something like BrickSearchResult.Empty is not.

Style out of the way, now let's move on to data. You are a database guy. I would suggest using a database to store the data over an xml file.

Next. You are doing a ton of work in your application's main constructor. Move that code out of there, and let it initialize the app unimpeded. People debugging your code later will thank you. I would suggest using the Form_Loaded or whatever the Forms equivalent for Window_Loaded is.

On a general note, follow the principle of having each small piece of code do one thing, and one thing only. Your main class is also responsible for data access, it should not be. You should have separate classes for that, this is called 'separation of concerns'. Your CRUD operations should all be in the same class. Each class should have its own file whenever possible. So 'DataObjects.cs' would be split into 'Customer.cs' and 'Brick.cs'. Keep in mind that you can use folders in your solution as well to keep things a bit more organized.

You are welcome to PM me if you have other questions.

u/gibbons1980 · 1 pointr/csharp

I think learning OOP is a very good idea. There are tons of books on the subject but I would recommend these 2:

Uncle Bob's Agile Principles, Patterns, and Practices in C#

This book will teach you not only about good OOP principles (SOLID principles) but a also a lot about other programming practices such as testing and refactoring.

Sandy Metz's Practical Object-Oriented Design in Ruby: An Agile Primer

Don't worry about being a Ruby book, you should be able to understand the concepts (and learn some Ruby). Sandy ha a very good way of teaching how to think about OOP.

Hope it helps.

PS: I'm curious: what exactly did you struggle with? What made you think you should learn OOP?

u/TrumpLyftAlles · 11 pointsr/csharp

> Are the books any good?

It's been years since I looked at them but they used to be mediocre.

Bonus Data! Microsoft Visual C# Step by Step (9th Edition) (Developer Reference) 9th Edition from Microsoft Press has 11 reviews averaging to 3.7 out of 5.

This search for C# on Amazon shows C# books ranked by average customer review. Some of them are too old. I don't know what to recommend.

I find it amusing, though, that C# 6.0 in a Nutshell is 1136 pages long. That's a BIG friggin' nutshell. :)

u/cajun_super_coder2 · 9 pointsr/csharp

One of the best ways to learn is by studying other people's code. Using book references like the one you have on C# is a great start. Make sure you ask questions to yourself and really study the code. Questions to keep in mind: why is this line before that line? What would happen if these two lines were swapped? How could I make this easier to read? Do all of these lines make sense when grouped together in a function? How can I break this down into a simpler class/object?

Those are the kinds of questions professional developers ask themselves on a daily basis. If you start asking yourself those kinds of questions early, you'll become a very competent programmer.

I highly recommend new programmers to read Code Complete:

The fact that you've submitted this question indicates that you're on the right track. You just need practice.

u/zebishop · 3 pointsr/csharp

I found that often the best way to know if your implementation is SOLID is to write the unit tests for it.

For example, if you want to test the PreferencesThing class, you could run into an issue because of the dependency on PreferencesStorage() : if it needs a file, the network, whatever, it will be hard to write. So PreferenceStorage should implement a IPreferenceStorage interface, that you would mock during the tests. And your class constructor or GetThing method would take a IPreferenceStorage parameter. In a strict SOLID approach, I guess that even the ObjectSerializer could be considered problematic.

That being said, keep in mind that SOLID is an excellent way to structure your code, not a magical hammer. Use it wisely.

I would recommend (if it has not been made) reading which goes in length on those topics. Also, anything else by Robert Martin (uncle bob) is usually a good reference on the topic.

u/GeminiVI · 3 pointsr/csharp

> learn these patterns practically?

Maybe for now you might want to just read up on them and keep them in mind for the future. For further reading on design patterns pick up "Design Patterns: Elements of Reusable Object-Oriented Software". When you start building something plan it out before hand, preferably with pen(cil) and paper. Once you have some rough idea, see if you can recognize any place where design patterns would come into play. Sometimes they will be intuitively incorporated into your design process, or they will emerge naturally if you try and think holistically about a problem instead of moving your project along piecemeal.

>My goal eventually would be to land an entry C#/.NET position at some software company.

I would encourage you to learn ASP.NET MVC 5, a web framework like Angular or React, and Entity Framework. You may just want to learn the "Core" versions of ASP.NET and Entity Framework then go back .

I've taken this course on udemy on ASP.NET MVC 5, which I would recommend. The same author has put together another course on ASP.NET Core, AngularJS, and Entity Framework which I want to take soon. It looks like they are sequential given the requirements for each course, so you should take the MVC 5 course before you take the ASP.NET Core course. If you created a Github for a sample website (say a pizza shop where users can register, login, and order) and hosted it on Azure to show prospective employers, that could very well get your foot in the door.

u/emcoffey3 · 1 pointr/csharp

Check out this, this, and this.

There's tons of books on C#. I personally like Introducing Visual C# 2010 from Apress and C# 4.0 in a Nutshell from O'Reilly. The former does a nice job covering both the C# language and the most important parts of the .NET framework, then gives a brief intro on the different UI options available. The latter skips the UI stuff, but covers some advanced topics a bit more in-depth. A lot of people seem to like Apress's Pro C#, but I didn't care for it. Also, check out the tutorials on BlackWasp.

After covering all of that stuff, figure out what you want to do and go from there. For Windows development, learn Win Forms and WPF. For web development, look into Web Forms, MVC, and Silverlight. For web services, learn WCF. Then take on a project or two, read articles, etc.

u/sixothree · 3 pointsr/csharp

You need to pick a project that is bigger than your understanding of the language. It really is that easy.

Since you know a bit of Java, get this book: C# 5.0 in a Nutshell. It's an excellent reference.

I find myself using the following sites:

For basic learning.

For finding specific answers.

For finding useful open source projects and libraries.

For finding useful open source projects and libraries, as well as tutorials and guides.

u/grauenwolf · 1 pointr/csharp

It is by far the best book on API design for any language. I highly recommend it no matter what you program in.

Plus it explains what the .NET developers were thinking when they created it, so you'll get a better understanding of how the APIs were laid out. This not only helps you find what you need faster, but also makes it easier to create new libraries that feel like the built-in ones.

u/nikofeyn · 2 pointsr/csharp

take a look at head first java and head first c#. i learned object-oriented programming from head first java, but was implementing object-oriented code in another language, which is one example of how good the book explains the general concepts. it is far better than head first c# in terms of explaining object-oriented concepts and is likely better than most books, but head first c# gets you a lot of hands on experience with visual studio and c#.

reading head first java first and then moving to head first c# wouldn't be a bad approach, in my opinion.

u/codechinchilla · 1 pointr/csharp

There isn't a 4th ed./C# 6 version out yet for this, but C# in Depth ( is basically all advanced C#/.NET topics, and extremely well written.

If you're looking to up your C# knowledge, definitely would recommend this book. (Also a lot of the C# 6 features are syntactic sugar, so you're not missing too much you can't get from an online source such as

u/tragoh · 10 pointsr/csharp

C# in a nutshell is a good reference to learn the ins and outs of the language without muddying up the concepts with opinionated frameworks and patterns.

Learning the languages capabilities is only half the battle, and once you have the syntax down you really want to supplement that with a book that teaches you how to write C# as the language designers intended. The following is a little old but written by some of the original members of the .net team and fairly timeless

I've worked with several great C++ developers who thought they knew C# but we're really still just writing C++ without ever really learning to embrace the language. Don't be like that

u/Bolitho · 2 pointsr/csharp

Ok, then I would suggest the following ones:

  • Head First Design Patterns
  • Clean Code

    Besides Books you can also find good artciles on the net about OOP basic principles like SOLID.

    Actually I loved the Design Pattern book for showing me, that the basic principles are really the core of OOP. Of course they rely on the building blocks (Abstraction, Inheritance and Polymorphism), but they show you, how you should use those and make advanatge of them in order to build clean, resuable and maintable software. The latter on of the books focuses more on those principles, which is also nice.
u/Liam2349 · 1 pointr/csharp

Dependency injection and interfaces are mostly more advanced concepts. You can code most things without doing them properly. It comes into the design of your software and testability. It's not something I'd recommend learning first. When it's time, I highly recommend reading The Art of Unit Testing by Roy Osherove:

Until then, you're better off learning how to actually code in C#, and learning important C# features such as the differences between reference and value types, LINQ, asynchronous programming, threading, and more. You can learn all of this with Venkat's C# for beginners series:

To develop a web project, you could then move onto Venkat's MVC tutorial series, however if you're planning to store data, I recommend first watching his Entity Framework and SQL Server series.

u/slackrock · 3 pointsr/csharp

O'Reilly always does a solid job. Any of the recently published Microsoft books on C# / .NET / .NET Core are going to be good too. Though they may be dry, you'll be impressed with what you know how to build once you're through it. Also, going through the online tutorials Microsoft maintains is a good way to start. It'll help you hone in on what you want to focus on learning.

u/mcbacon123 · 10 pointsr/csharp

I disagree with the other commenter. Books aren’t boring and slow, they can be more interesting and immersive than video tutorials. Different people learn differently so books are great for some (like myself) and not so great for others.

That being said, this is the book you want.

It’s very well written and easy to follow for beginners. I find it more useful than most video tutorials for beginners.

If books aren’t your thing try’s course for beginners

u/wreckedadvent · 4 pointsr/csharp

> F# has its purpose though I, like others, feel that wide application of a functional language is not really the best way to go.

That's the thing though. F# is a functional-first language, not a functional-only programming language. There's very little C# can do that F# can't, and usually F# does what C# does with much less typing, particularly less type annotations. Even in totally imperative code, some features like type providers and native scripting can make a huge difference in developer productivity.

One of the reasons I actually like F# so much is it allows you to make a pretty functional domain and then expose it in C# in a way that feels natural and OOP - the best of both worlds.

>IMO a .NET platform developer should understand the languages that the platform supports because while they are all turing complete each has its strong and weak points.

I agree entirely here. The whole point of the CLR was to allow each language to specialize a little bit (or a lot of bit) and for you to choose the correct tool for the job.

I think what's happening more and more though is that people are just trying to make C# do everything, and that's where you see some of that resentment (and fear) in that linked discussion. Particularly when C# seems to be forgoing features that would make it better as an OOP language, like default interface implementations, for features that only very awkwardly and marginally make it better in other domains, like non-recursive statement-based type switching.

I still remember reading CLR via C# and counting how many times the author underscored how wonderful the CLR was for acting as a language-neutral breeding ground, and lamented how rarely this was being used in practice these days.

Thanks for your response though. I still think the pure vitriol against VB is not entirely justified, but I can understand why some people would dislike it.

u/JonnyRocks · 5 pointsr/csharp

The most important thing to me isn't that someone knows everything about a language but knows how r o code well. I highly recommend - Clean Code: A Handbook of Agile Software Craftsmanship

u/big-ookie · 3 pointsr/csharp

I would strongly recommend reading this book

It should be mandatory reading in all CS and SE degrees IMO.

It will not answer your specific question, but it will provide you with the tools and knowledge to understand how best to approach the problem and ensure your architect and design is well though through and draws on the learnings of those who have come before us.

u/both-shoes-off · 7 pointsr/csharp

Google "c# github projects for beginners". Theres a whole bunch of interesting stuff out there. You could also download/fork a github repo and try to extend a project, or build on top of it.

I think this repo has been posted here before, but learning design patterns is really useful prior to designing something from ground up.

Here's a good beginner's book on design patterns.

u/fuckyournormality · 2 pointsr/csharp

I can highly recommend C#in Depth. It does not start with programming basics, instead it walks you through the evolution of the language version by version, which means not only that the more advanced topics are further down the road, but also gives you a very broad understanding about why the language has developed the way it has.

Edit: also +1 for Unity. It really gives you the freedom to focus on the important parts of game development.

u/farox · 0 pointsr/csharp

Get the original book, at least skim it and remember the type of problems it helps you fix. You don't need to memorize it, but it also just helps thinking about software more abstract:

Also as you said, there are a lot more now. A lot of new trends came and went since then. But this is a really good foundation. On top of that you can read up on whatever is relevant for your projects.

u/NisusWettus · 6 pointsr/csharp

C# in Depth likely isn't what you need. That's more aimed at proficient coders that want to understand the nitty gritty/internals.

Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin) is very popular. Not specifically aimed at C# (a lot of the examples are Java) but it's guidelines about how to write clean code in general. The lessons carry over to all/most languages. That's probably more the sort of thing you want.

Robert C. Martin aka 'Uncle Bob' also has a few other books but I've not really looked into them. e.g. this one is focused on C# and looks decent based on a quick skim of the index but I've not read it:

Agile Principles, Patterns, and Practices in C# (Robert C. Martin)

u/RagtimeWilly · 1 pointr/csharp

I'd recommend taking a look at Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries.

It's a pretty easy read and gives very comprehensive guidelines for designing libraries.

u/MrDiSante · 1 pointr/csharp

You're done when you can write the code for any piece you don't have a more detailed plan for in under 5 minutes.

If you're looking for more guidance on how to do this stuff, read Code Complete - it's written with C in mind, but translates perfectly well to most software projects. Especially chapter 9 - Pseudocode Programming Process.

u/adscott1982 · 3 pointsr/csharp

I didn't like it - I thought the demo examples were the most boring thing ever.

I prefer the 'C# Player's Guide' as a beginner book. I really thought he explained the concepts very well and for whatever reason was able to get through pretty much the entirety of it, which is a first for me as I don't usually have much stamina for these things.

I remember I got the first edition a few years ago and I took the time to message RB Whitaker at the time how good I thought his book was. It is on to the third edition now so other people must agree.

u/shankrabbit · 8 pointsr/csharp

CLR via C#

This is the only book you need as a beginner to C# who already knows other languages.

What are you waiting for? Go get it! Read it! And impress the shit out of your employer.

u/delphi_edict · 2 pointsr/csharp

There are two good texts that I'd recommend, each have their own bright spots. Pro MVC 5 and Professional MVC 5.

u/combovercool · 2 pointsr/csharp

This is how I learned C#. I had taken a semester of C++ in college when I read this. It doesn't talk down to you, and it isn't dry. You could probably skip the first few chapters since you have a lot of C++ experience.

Enjoy C#. It's great, unless you are putting down the cash for Visual Studio, but I would highly recommend using it.

u/xunlyn85 · 9 pointsr/csharp

I generally agree, but the problem with patterns is some folks try to shoehorn everything into a pattern sometimes turning something simple into something more complex than it needs to be.


I find that following SOLID with YAGNI at the back of your mind tends to be what seems to work best for me

Along the lines of patterns: I'd recommend Head First Design Patterns

u/geek_on_two_wheels · 5 pointsr/csharp


I'm working through that one right now and so far it's great.

(Not to be confused with Professional ASP.NET MVC, which may also be great. I haven't tried it)

u/whitedsepdivine · 3 pointsr/csharp

I recommend this book to everyone who writes C#: Framework Design Guidelines

I have read it 6 times, and know every detail in the book. I am now absolutely a top tier expert in c#. (I have had roles such as Lead Architect for multiple 1/2 billion dollar projects.) Whenever anyone asks me about how I got so good, I always say this book was what started everything for me.

Read it to understand it. If you do not understand something, research the topic, write test apps and spend your time on figuring out what it means.

The book is a bit outdated, as some topics have changed. For example c# now has variance built in and there is no longer a need for mimicking it.

Additionally, a tool like ReSharper follows the Guidelines outlined in that book, and adds too it. So having ReSharper, and spending the time to understand it's warnings will be additional help.

These two resources will help in specifically C#. Additional frameworks such as MVC is touched on, but not explained in detail. I although feel that understanding the language will help you pick up how to use frameworks.

u/Bunky2k · 3 pointsr/csharp

"Clean Code" is excellent - all the code examples are in c++ but they are easy to understand (id never used c/c#/c++ when i read it).

u/gxhxoxsxtxfxm · 1 pointr/csharp

Oh! These are indeed very useful tips. Thank you for the points. I am currently learning ASP.NET Core MVC. I have been a C# developer for a few years but I have never developed Web applications with ASP and have always resorted to what I already knew (Java and PHP). My current work laptop as well as the home software ecosystem is now Apple-based and I would rather not split work and switch between operating systems. That's why I was trying to utilise VS for Mac. As of now, my aim is to learn ASP.NET, but at some point I would also need to build .DLL files and I may have to build REST APIs and host apps on Azure. I doubt if I will go back to building native/desktop apps for now. But if I will someday, I will probably start learning something like Electron.NET. So, any further tips are appreciated.


P.S. The book I am currently reading is Pro ASP.NET MVC 2 by Adam Freeman which looks comprehensive thus far even though the examples are built in the Windows version of Visual Studio for which he takes no blame.

u/writerofthecodes · 1 pointr/csharp

A great book that many companies require new hires to read:

Clean Code: A Handbook of Agile Software Craftsmanship

u/realjoeydood · 5 pointsr/csharp

Clean Architecture, for sure.

Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)

u/mooseman77 · 2 pointsr/csharp

Work your way through a book on object oriented programming. This is one of my favorites: Head First Design Patterns: A Brain-Friendly Guide

It's simple, repetitive, and thorough. It's almost impossible not to learn from it. Some people find it too repetitive, but I think it's great if you don't have much experience with design patterns.

u/t3h_Inox · 20 pointsr/csharp

There are some good C# project examples implementing clean architecture in ASP.NET Core (although the architecture itself could be applied to WPF and other kind of apps).

Have a look at this talk:

GitHub repository from the talk here: (I'd prefer this one)


Another example:


Additionally, if you really want to understand the subject this is an obligatory read:

u/KryptosFR · 6 pointsr/csharp

You beat me to it :)

Another recommendation is Concurrency in C# Cookbook by Stephen Cleary. It is easy to read, even on a trip. But you might want to do that at the end of said trip because it will make you want to experiment it yourself.

u/triv_burt · 3 pointsr/csharp

I'm currently using this book. The author prefers not to use templates meaning you actually learn to read the code properly rather than just following mouse clicks.

Because he doesn't use templates he writes everything in a way that you can use Visual Studio code as well as Visual Studio. It's great if you have an older computer/laptop or plan to develop on a Mac or on Linux.

u/haven1433 · 1 pointr/csharp

Regarding a decent README, I absolutely agree. My thought was that I would add one as soon as I have some of the basic features working. But I suppose that at the minimum I should add some sort of vision statement to a README so that you kind people at least can see my goal for the project.

Regarding comments: I actually agree with Clean Code, that using comments is usually a smell showing that the code isn't clear enough. Were there specific places where the code was hard to read, which made you want comments? Maybe there's some refactoring I could do to make the code more clear.

u/ShipOfHopes · 14 pointsr/csharp

I don't know how open you are to using more than one text, but Jon Skeet's C# in Depth is about as canon as it gets. A second-term course where C# basics are already understood would be great for this text. I can't speak for a truly introductory book, however.

u/wllmsaccnt · 2 pointsr/csharp

This would be the updated version of that book (as long as you are OK focusing on Core). Adam does a good job introducing ASP.NET, but he also covers a broad spectrum of cross cutting concerns and OOP concepts. I would highly recommend his books for anyone new that wants to go down an MVC path.

u/tmckeage · 9 pointsr/csharp

I think some of these are a bit to specific for an entry level position where they know you have no experience ahead of time.

Whats your background in strongly typed languages?

This is a copy paste from a previous comment I made to a similar question I saw in the past:

If they are aware of your lack of knowledge I would focus less on the specifics of C# and more on programming basics, principals of OOP, and what it means to be a strongly typed language...

  1. have a strong grasp of the following: if, else, switch, while, do, for, foreach
  2. understand how to properly use recursion
  3. understand the difference between a reference and value type

  4. Know what the following are: Constructor, Property, Method, Member
  5. Understand how the class object is instantiated
  6. Have a basic understanding of inheritence and interfaces and how they work
  7. Have a basic grasp of the following keywords: public, private, class, new, static, void

  8. know the majority of the c# primatives (int, bool, long, short, string, etc)
  9. Understand how StringBuilder, DateTime, and TimeSpan are used
  10. Understand how a string is an immutable reference type

    I suggest the first four chapters of

    Also as a note I was in a similar situation, hired as an intern with no c# experience and basic python experience. They know you don't know shit, whats important is when someone explains something to you that you have the vocabulary to understand what they are saying.
u/grandslammer · 2 pointsr/csharp

Thanks, but this is one 7.5 hour course and does not seem anywhere near a complete path to being job ready.

I have a Udemy account and would buy Mosh's courses on Udemy if I thought that they would form a concise package when put together. I would supplement this learning with books if necessary - specifically the following:

But a course where everything fits together (such as a bootcamp I can't afford) is really what I'm looking for.

u/Bozar42 · 1 pointr/csharp

> is there a good book/course for developing desktops apps? I can only find books/courses on developing backend, REST services and the sort, never about desktop apps.

I just purchased two books this week. They might be helpful to you:

u/KoleCasule1 · 1 pointr/csharp

Hehe, thanks for pointing out. I'll definitely read "APP&P" as it's from Uncle Bob and I see people cherishing his work.

Since I mentioned it, I assumed you are talking about Uncle Bob's book:

Correct me if I am wrong.

u/forthesailsofnight · 2 pointsr/csharp

This book explains fairly well what many professionals consider 'clean code'.

Stay true to OOP and keep in mind the writings of this book, and i think you will avoid most major setbacks.

u/Venthe · 1 pointr/csharp

If possible, avoid it. C# already provides you with enough clarity

public Variable {get;set;}
private variable;

public SampleMethod(variable){

Also, descriptive variables are beautiful. Take look at the Clean Code if you haven't had an occasion.

Of course underscore notation is used (sometimes) as could be seen here:

u/XVar · 1 pointr/csharp

> This is especially important if there is a "calling protocol", like "cannot call X before Y".

This is known as Temporal Coupling, and is generally not a desirable design. You should enforce correct usage through your design, not through comments.

Incidentally this is another thing covered in Clean Code by Robert "Uncle Bob" Martin, if you haven't read it then you should, it's probably the most important book any software developer will ever read.

u/lanedraex · 5 pointsr/csharp

If you are familiar with javascript and java, you probably should just go straight into a web framework book(assuming you want to do C# web development).

Grab a book on ASP.NET MVC 5 or ASP.NET Core MVC.

If you have trouble understanding the language basics on these books, then go back and watch the MVA series and skip the things that you already know.

You can probably find some good resources on Pluralsight as well, if you want video stuff.

Searching the internet you will find many Microsoft code samples, so if you are familiar with web frameworks in general, maybe you can just dive into these samples.

u/rfinger1337 · 4 pointsr/csharp

That's an interesting point. I can't remember seeing books that target experienced devs that use exercises. They tend to say "here's how this works."

^ I don't think there are exercises, but I like Jon's writing style and his technical knowledge is beyond reproach.

u/stdio_h · 3 pointsr/csharp

Pieces of your app should be able to change without considerable changes to the whole.

research solid principles:

research a layered architecture:

try this link for sqlite:

also, if you are in school, complete your assignments, but other than that
do not write another line of code until you have checked out (at least read the chapters on writing classes and functions):

Clean Code

and Code Complete

u/DANjEEEEE · 1 pointr/csharp

There is a 2nd edition version of Art of Unit Testing which came out at the end of 2013 (Original is from 2009) with the examples focusing on C# which may/may not be more useful for people interested:

UK Amazon Link

US Amazon Link

u/xampl9 · 2 pointsr/csharp

“Gang of Four” It’s the original design patterns book.

Like lots of new things, they got over-used. And misused.

Design Patterns: Elements of Reusable Object-Oriented Software

u/bookon · 1 pointr/csharp

Try reading THIS Code Complete and / or any of the well reviews books in the "you might also like" section of that page.

u/darchangel · 1 pointr/csharp

I recommend this book:

Although it's cutesy to a fault, the info is solid and understandable. Do not skip the exercises: actually do each one.

u/wataf · 1 pointr/csharp

Yep, I've googled class naming patterns more than a couple of times. I found this stackoverflow answer, looks like handler might work well in this case.

If you want to go overboard and waste a little corporate money, you could always get your manager to order this for you.

u/pauloortins · 1 pointr/csharp

There are several books, blogs and videos that you can use.

These books are good choices:

C# 5.0 in a Nutshell and
Pro C# 5.0 and the .NET 4.5 Framework

I also wrote a blog post about it.

Resources to become a Ninja: C#

u/Innovashiun · 1 pointr/csharp

Since I'm also a beginner I need to ask: Is there a need for algorithms? I don't see anyone mentioning algorithms. Anyway, if you do care about them I suggest the book Introduction to Algorithms, 3rd edition.

u/TheUnwiseOwl_ · 4 pointsr/csharp

CLR Via C# is a really good book to have handy.

u/GalacticGlum · 1 pointr/csharp

For a good algorithms and data structures textbook take a look at: Algorithms 4th Ed. by Sedgewick and Wayne ( or Introduction to Algorithms 3rd Ed. by Cormen, Leiserson, Rivest, and Stein (

u/noobzilla · 13 pointsr/csharp

CLR via C# for a better understanding of the runtime you're working with.

C# in Depth for a deep dive into the language and it's features and their details of implementation.

I'd consider those two to be the primary intermediate texts.

u/auctorel · 10 pointsr/csharp

An alternative to the gang of 4 book which is easier to digest is the head first guide

Head First Design Patterns

u/jeremywho · 2 pointsr/csharp

I'd recommend the basics from searching around, maybe checking out a video on youtube. Figure out how to setup a project using MSTest and one using NUnit (maybe XUnit as well). Do a basic TDD Kata (fizz buzz, etc).

Learn about using fakes/mocks/stubs (NSubstitute is good).

C# Specific book, new version out in November:
The Art of Unit Testing: With Examples in .NET

Get the pre-release here if you want:
The Art of Unit Testing: With Examples in .NET

u/iissqrtneg1 · 6 pointsr/csharp

Learn what's happening at the metal.

Edit: I'll be a little more helpful and say read this book: (not an affiliate link)

u/jeremymorgan · 3 pointsr/csharp

What helped me, way back in the day was the O'Reilly book.


Had to learn C# for work so of course I took tutorials, downloaded some stuff and tinkered around, but I had no idea what I was doing. Started reading the O'Reilly book on my lunch breaks and making up exercise for myself. Took me months, but I learned a ton. Within those few months I already figured out tons of way to save myself time and frustration.

Another good idea is taking the C# Role Track at Pluralsight.

I'm about halfway through it now, and I've learned quite a bit. I've been a C# dev for years. Really gets into all the nook and crannies of the language.


u/alphaglosined · 7 pointsr/csharp

I would recommend not looking for C# specific books. Language specific books tend to get out-dated very fast and won't be as high of quality.

For this reason you want books like and


I'm personally in the market for data structure books, sadly its a slippery slope when you already have a few.

u/thisdudehenry · 1 pointr/csharp

I have Head First C#: A Learner's Guide to Real-World Programming with C#, XAML, and .NET and also orderd The C# Player's Guide (3rd Edition) second edition has nothing but great reviews. Also you can skim through a few chapters and I like how it's structured with chapters that are only projects for you to do that they taught you basics in the previous chapter.

I plan on doing that book first since it's more up to date and modern . Then tackle head first c#, because it's a little older so I'll know my way around and it also starts you off with the GUI too and a few little things the other book doesn't go over .

u/theorish · 2 pointsr/csharp

"Pro C# 2010 And The .NET 4.0 Platform" by Troelsen.
£27.23 on amazon.

Very thorough, in-depth, aimed at experienced programmers.
Covers C# and .NET, including CLI, CLR, and an overview of .NET libraries.

u/grep65535 · 1 pointr/csharp

For programming and everything involved with it, if you want standards and "how should I do this?" questions answered for you, reference this:

Clean Code: A Handbook of Agile Software Craftsmanship

Get yourself a copy, read it twice, then you can show your senior what the standard is.

u/ssentrep · 4 pointsr/csharp

Read "Code Complete, 2nd version". Its everything you'd learn in 10 years of experience, summarized into 1 book.

u/piglet24 · 0 pointsr/csharp

Always use tasks. In Stephen Cleary's book he even writes "As soon as you type new Thread(), it’s over; your project already has legacy code."

u/americio · 1 pointr/csharp

For a quick overlook, this. And for a little bit more detail, this one.

u/jodevgn · 9 pointsr/csharp

I found this book to be incredibly helpful:

It's not so much about Test Driven Development, but focuses more about how to organize and write unit tests and fakes. Has a lot of discussions pro and con regarding things you may run into. It also compares unit testing frameworks. Keep in mind that the book is over three years old now, so those comparisons may or may not hold up as well anymore. Doesn't detract from the rest of the book though.

u/UpNorthMark · 1 pointr/csharp

Just about to pull the trigger one of these.
I'm not going going be applying for jobs for a couple of years because of college. Should i bother with MVC 5 or try to jump straight into core.

u/prajaybasu · 1 pointr/csharp

C# is not a popular language with academics who tend to write cryptic Java and C/C++ for a living, so good luck finding a reference written by someone credible.

u/indrora · 1 pointr/csharp

Three things:

  • Get an IDE that doesn't give you help. SharpDevelop is good for this.

  • Get the book "Pro C# and the .NET framework" from Troelsen:

  • Learn from production code and someone else's failures.

    I learned most of what I know today by writing VB apps and having the IDE convert them to C# (I stared with SharpDevelop)

u/lucisferre · 3 pointsr/csharp

Just an aside but if you are resorting to heavy use of regions and/or need to collapse methods to keep the code organized and readable you may just have classes and methods that are way too large. See Clean Code if that is the case.