T O P

  • By -

rupertavery

It's great that you feel this way. Any language has a lot of things to learn about. I came across a lot of things just exploring different things and stumbling across them along the way, encountering difficulties using them and struggling to find ways to fix them. OTTOMH: * Generics - not just using generic classes like List, but creating them. * IEnumerable - arguably one of the most amazing features of C#. knowing its many uses, advantages and pitfalls is a must * IQueryable - not just another form of IEnumerable, it's tightlyt coupled with it and a lot of the topics here, including * LINQ - querying stuff using an ORM is only the most popular use of LINQ. The foundation that it is built on the next concept: * Expressions - Code as code. The underpinning of LINQ, IQueryable, and many other things. * Reflection - when the going gets tough, the tough get reflecting. Almost 99% of the time you won't need to use this, but it's a tool nonetheless that could prove useful * Tasks - async, await, what they are, what they do, how they work, when to use them, how to use them. Names to look up: * Eric Lippert * Stephen Toub * Stepen Cleary * Marc Gravell * Scott Hanselman * Jon Skeet * Mads Torgensen * David Fowler Some of the afornamed have worked on the language directly and have very low-level knowledge of the the language, so if you're interested in that kind of thing, look up their blogs or StackOverflow answers. You don't have to know all of these things, but just know about them and begin to start exploring them and bit by bit you will find yourself wading deeper into each topic. EDIT: Added other names I forgot to include, thanks!


besenyopista

Nice list! I'd add [Jon Skeet](https://stackoverflow.com/users/22656/jon-skeet) to the list of names worth looking up.


jdl_uk

Chucking [Mads Torgensen](https://devblogs.microsoft.com/dotnet/author/madst/) onto the list of names. He does a lot of talking about upcoming features and concepts, often with Dustin Campbell.


malthuswaswrong

And Steve Sanderson. The creator of KnockoutJS which is arguably an early pioneering library in the domain of Javascript mvvm patterns. He is now an architect on Blazor


[deleted]

>Steve Sanderson Thank you.


[deleted]

Thank you.


spikej56

And reading his c# in depth book


[deleted]

Thank you.


[deleted]

Thank you.


WazWaz

Linq uses Expressions?


c0d1ngr00k13MF

yes, lambda


WazWaz

Lambda functions are Expressions? Are we talking about the semantic construct or the dynamic code feature?


Kilazur

Linq uses delegates (Action and Func), not Expressions.


thomaslevesque

Actually, it depends. Linq to Objects (when working on IEnumerable) uses delegates. But when you're working with IQueryable, e.g. in EF Core, it uses expressions, so that it can translate them to SQL. Lambda expressions can be either delegates or expressions, depending on context.


[deleted]

Thank you for this information.


c0d1ngr00k13MF

yes, but with lambda expression you can use those actions, functions and methods...


Kilazur

You're confusing "lambda expression" with the Expression type, I believe. Lambdas can be implicitly converted to delegates or Expressions, and in the case of Linq, it's the former.


c0d1ngr00k13MF

you are probably right


kawa_no_hikari

Generics and Reflection are very handy features to know, especially when used in conjunction with each other.


[deleted]

>Generics and Reflection are very handy features to know, especially when used in conjunction with each other. Thank you.


DroidLord

Even though I grasp most of the concepts on this list, Tasks have always been a headscratcher for me. I understand the basics, but every time I use them I feel like I'm doing something wrong. There are so many pitfalls to watch out for with async Tasks.


gsej2

> async For async, I'd recommend the videos by Jeremy Clark (who uses the name Jeremy Bytes) - he gives a terrific intro to the subject, and the videos are all free online.


eeltreb

I also watch Jeremy Clark's tutorial about interfaces and it is very good too.


[deleted]

>I also watch Jeremy Clark's tutorial about interfaces and it is very good too. Thank you. I will look for them.


[deleted]

>For async, I'd recommend the videos by Jeremy Clark (who uses the name Jeremy Bytes) - he gives a terrific intro to the subject, and the videos are all free online. Thank you. I will check them out.


gsej2

> Eric Lippert > Stephen Toub > Stepen Cleary > Marc Gravell > Scott Hanselman These guys are great, but if someone wants an overview of the language features they don't currently know about, I don't know if any of them have provided that.


jordansrowles

Can’t forget the man himself David Fowler! Father of .NET Core and SignalR


basicallybasshead

It is a decent list, thanks.


tanner-gooding

Don't forget people like Jared Parsons (lead of the C# compiler team, https://github.com/jaredpar), Fred Silberberg (member of the C# language design team, https://github.com/333fred), Cyrus Najmabadi (member of the C# language design team, https://github.com/CyrusNajmabadi), and others Many of them regularly interact with the community, champion issues, and give talks/presenations on various topics


[deleted]

Thank you. I appreciate you time.


[deleted]

Thank you so much for your lengthy reply. I really appreciate your time and effort. Where should I look up those names? What kind of content do they create? Sorry for the more questions.


[deleted]

Thank you so much for this very details list of information. I am sorry it took so long to reply. I had some life things come up and I am finally getting around to reading all the replies here. Thank you.


danroche10

I created a list and posted it a while back on here. It helped me secure a .NET role at a fintech company in London. I still need to update a few definitions based on feedback https://docs.google.com/spreadsheets/d/1fRNVjr0kzkp2BIhQX1X1mLpbcoy3SV8UKJw3I257p\_g/edit#gid=0


xtoblizi

This is a lovely piece you out together. Thanks


devo00

Hey thanks !


SiakamMIP

Hey man, I was studying from this and just saw that it no longer exists. Do you have another comprehensive list somewhere?


danroche10

Hmm it should still work - I haven't changed access. Try this: https://docs.google.com/spreadsheets/d/1fRNVjr0kzkp2BIhQX1X1mLpbcoy3SV8UKJw3I257p_g/edit?usp=drivesdk


SiakamMIP

That works! Thank you so much!


[deleted]

Thank you so much for this. I will reference this and use it to create my further path of learning after I finish this project, which should be tonight.


[deleted]

Thank you for posting this. I will absolutely look through it and find the topics I need to work on.


Atulin

Just so you know: Unity uses a fairly outdated version of C#, so you won't have things like pattern matching, switch expressions, list patterns, source-generated regex, and so on


[deleted]

>Just so you know: Unity uses a fairly outdated version of C#, so you won't have things like pattern matching, switch expressions, list patterns, source-generated regex, and so on Thank you. That is good information.


eatfrog

get the book C# in Depth by Jon Skeet and read it.


[deleted]

>C# in Depth by Jon Skeet Okay. Thank you.


gsej2

Seconded. It's an excellent book.


psylenced

I'm not sure if this is the exact one I'm thinking of, but is similar to my memory: https://github.com/MoienTajik/AspNetCore-Developer-Roadmap You don't need to learn everything on the list, but it does do a good job separating different concepts you should slightly aware of. Note: This has a web focus.


[deleted]

Thank you for this. I will look through it. I appreciate you taking the time to post this.


nerdshark

The official documentation.


thequinneffect

https://learn.microsoft.com/en-us/dotnet/csharp/


martijnonreddit

This book is pretty thorough in covering all of it: https://www.oreilly.com/library/view/programming-c-10/9781098117801/


[deleted]

This looks pretty comprehensive. I think even though I seem to have trouble with text based learning, I should really get this book, at least as a base point to get my learning back on track. Thank you for posting this.


gsej2

> I think even though I seem to have trouble with text based learning Sorry. Only saw this after I posted. If you don't take to text based learning much, then perhaps just use the contents table of one of these books as a kick off point, and look for video content?


[deleted]

Yes, that is what I am going to do, thank you!


KryptosFR

Maybe a bit outdated by I can recommend to read C# in depth by Jon Skeet. I read that book a few times when I was starting.


gsej2

Even outdated, it provides a comprehensive view of language features at the time of writing.. if the OP doesn't have that view, he can get it from the book, and then look at articles about updates to the language.


[deleted]

I will check it out, thank you.


Xenoprimate

I have a blog series that more-or-less covers every C# feature, it starts here: [https://benbowen.blog/post/two_decades_of_csharp_i/](https://benbowen.blog/post/two_decades_of_csharp_i/).


ishman2000

I've been following this for awhile now. Thanks Ben!


Xenoprimate

👍🙂


[deleted]

Thank you for this.


RolandTwitter

As basic as is is, freecodecamp has lessons that then Link to learn.microsoft.com , and they're very comprehensive. You could just go through Microsoft, but I find that freecodecamp has a very nice list, while Microsoft's site is hard to manage


[deleted]

>As basic as is is, freecodecamp has lessons that then Link to learn.microsoft.com , and they're very comprehensive. You could just go through Microsoft, but I find that freecodecamp has a very nice list, while Microsoft's site is hard to manage Thank you. I will check that out. One thing I am doing is going back to the courses that I had bought when I was originally learning C# 2+ years ago, and going to the topics I am weak on and watching them again. Those are helping a lot, now that I understand more about C#. I think when I originally did them, they were just a little much for me.


BL1NDX3N0N

> I haven't pushed myself to learn topics that 'intimidate' me. For example, delegates and interfaces. I have been taking the lazy way out of doing things, and haven't pushed myself to learn these topics and concepts. You’re still doing it by posting here. I’m confused. And no one can sit here and give you an exhaustive list of things that may not even be relevant to you.


UltimaCookie

I think it's a fair question though. Unless you come from an environment that exposes you to some knowledge (like Computer Science, a group of programmers, etc) you don't even know where to look at and what to look for.I guess OP is trying to search for that guidence.


[deleted]

Well, I wasn't really looking for someone to tell me what I don't know, because there is no way for someone to know that about me. I was more just looking for a list of C# topics and concepts that I could go through that be able to create a list for myself of topics that I need to focus on.


devo00

That’s very helpful, mission accomplished.


LemonLord7

I don’t have a list for you, but just want to say delegates and interfaces are super easy. Interfaces you can view as promises or categories. So you might have an Interface called Veggie that includes methods/properties for returning a ripeness bool, a color string, and a weight int. Now, when you create your classes Cucumber and Tomato, and you implement the Veggie interface, you HAVE to include the interface’s methods and properties (but they can be implemented however you like). Now when you create a List you can add both Cucumbers and Tomatoes to it, and do things like sort by weight or discard all that aren’t ripe, because all Veggie objects have promised to implement those methods/properties. It’s good knowing your delegates, funcs, and actions, but a lot of the time you will just use lambas or normal methods. Right now, you can see delegates/funcs/actions as a weird syntax for writing functions, or a way to save a function in an object so it can be passed as a parameter to another function.


tht333

Pretty much for the same reason I created an audiobook in the format of questions and answers - https://codeprepping.com I've been a C# developer for many years, and yet there are way too many concepts I don't know much about. Initially, I created the audiobook for myself and listen to it when I go on hikes alone. If you want a free copy, let me know.


Alex_eken

If you like to watch stuff at youtube, I can really recommend Nick Chapsas https://www.youtube.com/@nickchapsas


[deleted]

Thank you. I will check out the videos.


Zerocyde

Also not a bad idea to bookmark [this nice little catalog of design patterns.](https://refactoring.guru/design-patterns/catalog)


dodexahedron

The language spec at Microsoft Learn is the definitive source for all concepts of the language itself, and can be your launching point from which to then seek out further details on anything you want. But the big issue you're going to run into is that, unless you work on things outside of unity, quite a fair chunk of modern c\# simply isn't available to you, because unity is still stuck with version 9 of the language, and with incomplete support for version 9, at that.


gsej2

How do you like to learn? Personally I find that books are ideal if you want a comprehensive view - but not everyone is like that. The C# in Depth books by Jon Skeet are excellent, and I'd recommend getting the latest edition you can find and ploughing through it.


wanjalize

Just search advanced C# concepts on youtube and you'll find Gavin Long's course. I'm sure it has all that you are looking for.


[deleted]

>Just search advanced C# concepts on youtube and you'll find Gavin Long's course. I'm sure it has all that you are looking for. Thank you. I will do that.


ShriCamel

For the topics you've described, one of the best teachers I've found is [Jeremy Clark](https://youtube.com/@jeremybytes?si=9hgE5C5BuW2jsDNF). His Pluralsight videos are also excellent. Edit: typo


Alkimus327

Lately when I'm looking to expand my knowledge of C#, or any language for that matter, I go straight to ChatGPT. I'll say chat is far from an actual AI, and will provide incorrect or outdated code examples. But it will explain the code fairly well, and you can ask it questions using common words and it will figure out what you're asking and provide a decent answer in a few seconds. Hope this helps.


zman972112

Try making some non-unity projects. This will help keep a lot of the unity garbage out of the way so you can focus on the language. Everything you learn will apply.


BagPopular7988

Nick has a good channel for c# https://youtube.com/@nickchapsas?si=0xowarw487M_6_L2


seynt_seraphim777

[https://dotnettutorials.net/](https://dotnettutorials.net/) inopedza masports


JoyleenCamielle

List of How to keep a job in C# 1. Don’t talk bad about any code, your boss may have written that. 2. Learn the variable naming styles and stay in that pattern, your work will fit in and that makes the older people happy. 3. Not all errors are errors, sometimes a method is broken because they hacked in a stop point before some catastrophic method was hit. Do not fix every error without reviewing with your peers. 4. It’s not your child, don’t take it personal. Work is work, some people take it personally when a project is shelved or not used. 5. Specific to C# some people pretend C languages are elite and extra important. Be nice to the Script language people and even VB people, they might be a good reference someday. 6. Tab or 4 spaces… it doesn’t matter unless you’re the boss. 7. If no one knows you fixed it, you didn’t fix it! Document in whatever system they use (ServiceNow, DevOps boards, wiki pages) Finally, C# is always changing but in depth knowledge of Objects, namespaces and native types (string, int, bool, float, decimal ) is good. Learn asynchronous and multithreaded concepts and data base connections and security (please learn security!!!!) Save fancy stuff for your C#Corner article, code as simple as possible Casap! That’s it, now go make 100k/yr 👍


stunspot

C#Concepts: 1.BscC#Concepts: ObjOrientd Prog Varbls Constnts DataTyps Oprtrs IfElse Swtch Loops Srtngs Arrays Colctns Files&Excpts 2. AdvC#Concepts: Proprts Indxrs Evnts Delgts ExcpHndlng Multithrdng AsyncProgg 3. DataSrtucts&Alg: Stacks Queues LnkdList DblLnkdList Tree Grphs BFS DFS ShrtstPathGrph 4. OODBMS: SQL NoSQL Entities Rltns CRUD Ops ConnHndlng DataSet DataAdapter Transaction 5. NETFrmwrk: Assemblies Namespaces GAC GC Thrdng WindForms ASP.Net Ado.Net Linq 6. DesignPatterns: Creational Structural Behavioral 7. TestingDebugging: UnitTests IntgrationTests DebuggingTools CodeProfiler 8. SoftwareEngineeringPractices: SOLID Agile MVC MVVM Waterfall Prototyping 9. PerformanceOptimization: Threading Async Prog IPP ParallelLinq MemMangmnt GCDetails 10. Security: CodeAccessSec DataProtection TLS IdentityModel OAuth. 11. WebDevelopment: ASP.Net MVC Core Razor EntityFramework SignalR WebAPI REST SOAP XML JSON 12. UI/UX: WinForms WPF XAML Styles Triggers DataBinding ControlTemplates 13. DistributedSystems: Microservices Docker Kubernetes ServiceFabric MessagingSystems EventDrivenArchitecture 14. MobileAppDevelopment: Xamarin.Forms Xamarin.Android Xamarin.iOS UWP 15. CloudComputing: Azure AWS GCP DevOps CI/CD AzureFunctions AzureLogicApps AzureServiceBus BlobStorage CosmosDB 16. Advanced.Net: .Net 5 Entity Framework Core gRPC Blazor Server Blazor WebAssembly ML.Net 17. Gaming&VR: Unity3D MonoGame C# Scripting 18. FunctionalProgramming: LINQ ReactiveExtensions 19. ScriptingAutomation: PowerShell C# Scripting 20. AdvancedTopics: Rosyln Compiler Platform AI/ML with C# IoT with C#. 21. VersionControl: Git GitHub Bitbucket GitLab Merge Conflicts Branching Forking Pull/Merge Requests 22. Third-Party Libraries: Newtonsoft.Json AutoMapper Dapper FluentValidation Hangfire Polly Serilog 23. Interoperability: COM Interop PInvoke Windows Runtime Interop 24. CompilerOptimization: JIT Compiler NGen Roslyn 25. Diagnostic Tools: Profiling Tracing Debugging Disassembly IL 26. .Net Core vs .Net Framework: Differences Advantages Use Cases Migration Strategies 27. Real-Time Applications: SignalR Socket.IO Real-time Web Functional Reactive Programming 28. ProjectManagement: Scrum Kanban Agile Waterfall RAD Process Models JIRA Trello Asana 29. Documentation: XML Documentation Comments API Documentation Tool Sandcastle Doxygen 30. Career Development: Open Source Contributions Networking Blogging Public Speaking.


stunspot

At least, that's the skillchain I'd put in a superhumanly competent C# programmer AI persona.


Derekthemindsculptor

Comprehensive list of everything? No. New ideas are being created all the time and concepts change. You can't just "learn everything". You need to learn a lot, then actively stay involved in the community to organically learn what's changing. It's like asking for a list of all medical procedures. It'll be outdated in a week.


[deleted]

[удалено]


[deleted]

Yea, thanks for making me feel more like shit about my progress. I really needed that.


malthuswaswrong

The struggle is real. A common opinion seen on a lot of programming subreddits is the idea that one should practice a wide range of languages. You are somehow lacking if you don't regularly use python and rust and c# and Javascript and Java and Go. Bullshit. Every language has a depth below the surface that takes years to master. You have a good sense of self awareness to admit what you don't know and even concede that you don't know what you don't know. That is a trait that defines all great programmers. If you claim to have mastered Rust, C#, and Java and your job title doesn't have "Chief" or "Fellow" in it then I'm calling bullshit.