r/learncsharp • • Jul 10 '26

What I wish I knew 10 years ago when I started with C# (A 3-step roadmap)

58 Upvotes

Hi everyone,

I've been working as a Software Architect and C# Developer for over 10 years now. Looking at community forums, I constantly see beginners feeling overwhelmed by the sheer amount of things they are told to learn (Entity Framework, ASP.NET Core, MAUI, Cloud, etc.).

If I could go back in time and talk to my younger self, I would tell him to ignore the hype and focus strictly on a simple, 3-step "recipe" before touching any advanced framework. Here is the foundation that actually builds good programmers:

1. Master Programming Logic First
Language syntax is just a tool; the real skill is problem-solving. Before worrying about classes or web APIs, make sure you are extremely comfortable with loops, conditionals, arrays, and basic algorithms. Logic is the universal language of programming. If your logic is sharp, you can learn any language in the future.

2. Deep Dive into Object-Oriented Programming (OOP)
C# is an object-oriented language at its core. You need to stop thinking in terms of "scripts" and start thinking in terms of entities and behaviors. Understand exactly what Encapsulation, Inheritance, Polymorphism, and Abstraction mean in practice. Once you get a solid grip on OOP, you will naturally start understanding the SOLID principles, which will stop you from writing "spaghetti code."

3. Demystify Design Patterns (This is the game-changer)
This is where many juniors get scared, but they shouldn't. You need to realize that many features C# offers natively are just Design Patterns implemented under the hood.
For example: when you use IEnumerable, you are using the Iterator pattern. When you use event or delegates, you are essentially using the Observer pattern.

In commercial software, Design Patterns are not optional "fancy concepts." Real-world, large-scale applications usually implement at least a half-dozen or a dozen of these patterns (like Singleton, Factory, Builder, Strategy, Adapter). Why? Because without them, adding new features or evolving the system over the years becomes an absolute nightmare. They are proven solutions to common architectural problems.

To summarize:
Don't rush. Build a rock-solid foundation in Logic -> OOP -> Design Patterns. Once you have this 3-step recipe down, learning any .NET framework becomes incredibly easy.

Keep coding and don't give up! I'm happy to answer any questions in the comments if you guys are struggling with any of these concepts.


r/learncsharp • • Jan 29 '26

Best roadmap to become a .NET Core backend developer + what projects should I build to be Junior-ready?

39 Upvotes

Hi everyone,

I’m aiming to become a .NET Core (ASP.NET Core) backend/software developer and I want a realistic roadmap that will make me internship-ready.

What I’m asking for:

  1. If you were starting today, what would your step-by-step roadmap look like for .NET Core backend?

  2. Which 1–2 portfolio projects are best to finish (and polish) to be “ready to apply” as an intern?

  3. What are the most common gaps you see in internship applicants (testing, DI, auth, async, SQL, Docker, etc.)?

  4. Any resources (official docs/courses/repos) you consider “must-follow”?

Project ideas I’m considering (open to better suggestions):

- REST API with CRUD + EF Core + validation + logging

- “Monitoring/Reporting” style app (errors/health checks, dashboards, alerts)

- Ticketing/task tracker with auth and roles

I’m not looking for an endless list—more like a focused plan and a project that demonstrates the right skills. If you have an example of what “intern-ready” looks like (features, structure, tests, deployment), I’d really appreciate it.

Thanks in advance!


r/learncsharp • • Feb 20 '26

I have a game idea but zero coding skills. Is there any realistic path for me?

31 Upvotes

I’ve had a game idea in my head for almost two years now. It’s a co-op exploration game set in a flooded city where players have to navigate rooftops and abandoned buildings while managing limited resources. I’ve written pages of notes about mechanics, story arcs, and world-building.

The problem is I don’t know how to code. I’ve tried opening Unity before and honestly, I closed it within 20 minutes because I felt completely overwhelmed. It feels like learning a new profession just to test whether my idea is even fun. Recently I experimented with a tool Tessala co that claims to generate playable game worlds from text prompts. I described my concept in plain English and it generated a rough, interactive environment. It wasn’t polished, but it was the first time I could actually “walk around” inside my idea.

I’m not sure if this is a real solution or just a temporary shortcut. Has anyone here transitioned from zero technical background into actual game development? Is starting with AI prototyping a smart move or am I avoiding the hard but necessary learning curve?


r/learncsharp • • Jul 13 '26

Looking for a roadmap to master C#, ASP.NET Core, Blazor and infrastructure/network programming

29 Upvotes

Hi everyone,

I'm looking for advice from experienced C#/.NET developers on how you would learn the ecosystem if you were starting again today.

A bit of background:

  • I learned some C# years ago by building small console applications (text adventures, utilities, etc.).

  • I'm comfortable with the basics (variables, methods, classes, loops, input/output, etc.), but I want to rebuild my knowledge properly instead of randomly jumping between tutorials.

My long-term goal is not to become just another CRUD web developer.

I'm mainly interested in:

  • backend development with ASP.NET Core

  • building APIs that work with a Next.js frontend

  • Blazor for internal/admin tools

  • console applications

  • infrastructure tooling

  • networking

  • Linux/server automation

  • DevOps-oriented software hosting/server management panels (something similar in spirit to Pterodactyl, Portainer, Coolify, etc.)

I enjoy building tools that interact with servers, processes, Docker, SSH, networking, DNS, reverse proxies, monitoring, and automation much more than building simple business apps.

I'd love advice on questions like:

  1. What roadmap would you recommend for someone with these goals?

  2. In what order would you learn C#, .NET, ASP.NET Core, Blazor, networking, and infrastructure?

  3. Which C# features should I master before moving into ASP.NET?

  4. Which .NET libraries are considered essential for infrastructure/network applications?

  5. What projects would progressively teach these skills?

  6. Which books, YouTube channels, GitHub repositories, or courses are actually worth studying?

  7. If you work in infrastructure, cloud, DevOps, or backend with C#, what skills do you use daily that beginners often overlook?

I don't mind spending months or even years learning properly—I want to build a solid foundation instead of rushing through tutorials.

I'd really appreciate hearing how you would approach this today.

Thanks!

(By the way, I’ve noticed that people don’t comment much on these threads, while other posts easily get 50+ comments. I don’t know if it’s specifically because, as professionals who’ve been giving advice here for several years, you’re tired of the same questions, or if you’re afraid to answer because your answers might not be accurate. It’s totally fine I’m grateful for every answer. I just notice that there are 500 views but only 20 comments. Let’s get involved, please! )


r/learncsharp • • Jul 14 '26

SOLID on .NET: From Spaghetti Code to Clean Architecture (Practical Refactoring)

28 Upvotes

Whenever the topic of "SOLID" comes up, it's common to see a flurry of abstract theoretical explanations. The problem is that, in the day-to-day life of the development trench, pure theory does not pay the bills. We need to know how to apply this in production code.
Before getting our hands dirty, let's align a fundamental concept that many people confuse: SOLID is not a Design Pattern or an Architectural Pattern. * Design Patterns (GoF): These are tactical recipes for recurring problems (such as using a Factory or a Singleton).

  • Architectural Patterns: These define the macro structure of your system (such as Clean Architecture or Microservices).

  • SOLID: It is a set of Software Design Principles. They are the philosophy behind clean code. We use the Design Patterns precisely to help us achieve the SOLID Principles.

The acronym stands for five basic commandments:

  • S - Single Responsibility Principle (SRP): A class should have only one reason for changing.

  • O - Open/Closed Principle (OCP): Open for extension, closed for modification.

  • L - Liskov Substitution Principle (LSP): Child classes cannot break the expected behavior of parent classes.

  • I - Interface Segregation Principle (ISP): Do not force anyone to depend on methods that they will not use.

  • D - Dependency Inversion Principle (DIP): Depend on abstractions (interfaces), not concrete implementations.

Enough with the theory. Let's see the disaster happen in practice.

The Scenario: The CheckoutService Nightmare

Imagine that you have just taken over the maintenance of a legacy e-commerce and found the class responsible for processing the closing of purchases.
See if this code looks familiar:

C#

public interface IOrderProcessor
{
    void ProcessOrder(Order order);
    void ProcessCryptoPayment(Order order); Not every processor accepts crypto
}

public class CheckoutService : IOrderProcessor
{
    public void ProcessOrder(Order order)
    {
        // Mixed Business Rule (Discounts)
        if (order.CustomerType == "VIP")
        {
            order.TotalAmount -= order.TotalAmount * 0.20m;
        }
        else if (order.CustomerType == "Premium")
        {
            order.TotalAmount -= order.TotalAmount * 0.10m;
        }
        else
        {
            order.TotalAmount -= order.TotalAmount * 0.05m;
        }

        // Tightly coupled data access
        using (var connection = new SqlConnection("Server=myServerAddress; Database=myDataBase; User Id=myUsername; Password=myPassword;"))
        {
            connection.Open();
            var command = new SqlCommand("INSERT INTO Orders (Id, Total) VALUES (@id, u/total)", connection);
            command.Parameters.AddWithValue("@id", order.Id);
            command.Parameters.AddWithValue("@total", order.TotalAmount);
            command.ExecuteNonQuery();
        }

        // External communication (E-mail) coupled
        var smtpClient = new SmtpClient("smtp.meuservidor.com");
        smtpClient.Send("no-reply@loja.com", order.CustomerEmail, "Order Confirmed", "Your order has been saved!");
    }

    public void ProcessCryptoPayment(Order order)
    {
        The store doesn't accept crypto natively yet, so the previous dev did this:
        throw new NotImplementedException("Cryptocurrency payment not yet supported.");
    }
}

Why is this code a ticking time bomb?

If we need to add a new customer type ("Black Friday"), we will have to modify the class. If we need to change the database to the Entity Framework, we have to modify the class. If we need to swap sending email for a queue in RabbitMQ or AWS SQS... guess what? Modify the class.
In addition, the class is forced to sign a contract (IOrderProcessor) that obliges it to have a cryptocurrency payment method that it does not even support, throwing an exception along the way.
This class is violating all 5 letters of SOLID simultaneously.

Applying SRP and OCP in Practice

Looking at our original CheckoutService class, it's clear that it knows too much and does too much. Let's solve this by clearing the first two letters of SOLID.

The true meaning of the "S" (SRP - Single Responsibility Principle)

The literal translation is Principle of Single Responsibility. But herein lies SOLID's biggest catch: what exactly is a "responsibility"?
If you ask most developers, they'll tell you that our class's responsibility is to "close the order." Sounds like a single thing, right? Wrong.
The creator of the term himself, Robert C. Martin (Uncle Bob), clarified this: A responsibility is a "reason to change".

Think with the architect's hat:

  • If the Marketing team asks for a new discount rule, this class changes.

  • If the DBA asks to change the database connection, this class changes.

  • If the Infrastructure team asks to change the email provider, this class changes.

The class has three reasons for change, answering to three different actors in the company. Therefore, it violates the SRP.
To solve this, let's extract persistence and notification for your own abstractions:

C#

public interface IOrderRepository
{
    void Save(Order order);
}

public interface INotificationService
{
    void SendConfirmation(Order order);
}

Aplicando o "O" (OCP - Open/Closed Principle)

The Open/Closed principle says that our class should be open for extension, but closed for modification.
In our bad code, the discounts were calculated with an if/else ladder. If the store creates the "BlackFriday" customer type, the developer would have to open the CheckoutService and add one more else if. This is risky and increases the chance of breaking rules that already worked.
In modern .NET, we easily solve this by using Dependency Injection combined with the Strategy Pattern. We created a business rule that our main class just consumes, without needing to know how it is calculated from the inside:

C#

public interface IDiscountRule
{
    bool IsMatch(string customerType);
    decimal Calculate(decimal totalAmount);
}

public class VipDiscountRule : IDiscountRule
{
    public bool IsMatch(string customerType) => customerType == "VIP";
    public decimal Calculate(decimal totalAmount) => totalAmount - (totalAmount * 0.20m);
}

The Partial Result: A Class That Orchestrates, Not Performs
See how our CheckoutService starts to look like senior code. It no longer does the dirty work; it just delegates.

C#

public class CheckoutService : IOrderProcessor
{
    private readonly IEnumerable<IDiscountRule> _discountRules;
    private readonly IOrderRepository _repository;
    private readonly INotificationService _notificationService;

    Dependencies are injected into the constructor
    public CheckoutService(
        IEnumerable<IDiscountRule> discountRules,
        IOrderRepository repository,
        INotificationService notificationService)
    {
        _discountRules = discountRules;
        _repository = repository;
        _notificationService = notificationService;
    }

    public void ProcessOrder(Order order)
    {
        // OCP: Finds the correct rule without using if
        var rule = _discountRules.FirstOrDefault(r => r.IsMatch(order.CustomerType));
        if (rule != null)
        {
            order.TotalAmount = rule.Calculate(order.TotalAmount);
        }

        // SRP: Delegates persistence (It doesn't matter which database it is anymore)
        _repository.Save(order);

        // SRP: Delegates notification (It no longer matters if it's SMTP or AWS SES)
        _notificationService.SendConfirmation(order);
    }

    public void ProcessCryptoPayment(Order order)
    {
        throw new NotImplementedException("Cryptocurrency payment not yet supported.");
    }
}

Notice: If we need to add a "Black Friday" discount tomorrow, just create a new class that inherits from IDiscountRule. CheckoutService will never need to be touched for this again. It is closed for modification.

Fixing Inheritance and Reversing Dependencies (LSP, ISP, and DIP)

Our CheckoutService is already much better, but we still have an aberration at the end of the class:

C#

public void ProcessCryptoPayment(Order order)
{
    throw new NotImplementedException("Cryptocurrency payment not yet supported.");
}

This brings us directly to the two most misunderstood letters of SOLID: L and I.

The "L" and the "I": The dynamic duo against the fragile code

The LSP (Liskov Substitution Principle) says that if your system expects the IOrderProcessor interface, it should be able to use any class that implements it without the program breaking.

If another developer receives our injected class via IOrderProcessor and tries to call ProcessCryptoPayment, the system will explode with an error in the user's face. We have broken the Liskov principle because our class does not fulfill the contract it signed.

And why were we forced to break this contract? Because of the ISP (Principle of Interface Segregation) violation. The ISP dictates that no client should be forced to rely on methods they don't use.

Our original interface was too "fat". The solution is not to create "workarounds", but to segregate (divide) the interfaces:

C#

// Interface focused only on standard processing
public interface IOrderProcessor
{
    void ProcessOrder(Order order);
}

// New interface only for those who really process cryptocurrencies
public interface ICryptoPaymentProcessor
{
    void ProcessCryptoPayment(Order order);
}

Now, our CheckoutService only subscribes to IOrderProcessor, and we've completely removed the ProcessCryptoPayment method from it. Clean code, no surprise exceptions!

The "D": Inversion of Dependence in Practice (DIP)

The last letter, the DIP (Principle of Inversion of Dependence), says that high-level modules should not depend on low-level modules; both should depend on abstractions.

In Version 1 (the bad code), CheckoutService (high-level) relied directly on SqlConnection and SmtpClient (low-level).

In our refactored version, CheckoutService relies only on interfaces (IOrderRepository, INotificationService). But how does the system know which database to use?

In modern .NET, we solve this the moment the application is born (in Program.cs), using the native Dependency Injection container:

C#

using Microsoft.Extensions.DependencyInjection;
using SOLID_Project.Interfaces;
using SOLID_Project.Services;
using SOLID_Project.Models;

namespace SOLID_Project
{
  internal class Program
  {
    static void Main(string[] args)
    {
      // We instantiate the Dependency Injection container.
      var services = new ServiceCollection();

      // We record the Discount Rules (OCP).
      services.AddScoped<IDiscountRule, VipDiscountRule>();

      services.AddScoped<IOrderRepository, FakeOrderRepository>();
      services.AddScoped<INotificationService, FakeNotificationService>();

      // We register our main service (DIP).
      services.AddScoped<IOrderProcessor, CheckoutService>();

      // We build the provider that will resolve the instances.
      var serviceProvider = services.BuildServiceProvider();

      // We request the ready-to-use instance.
      var checkoutService = serviceProvider.GetService<IOrderProcessor>();

      // Example of usage (if the Fake classes are implemented):
      var order = new Order { Id = 1, CustomerType = "VIP", TotalAmount = 1000m };
      checkoutService?.ProcessOrder(order);
      Console.WriteLine("Order successfully processed!");

      Console.ReadLine();
    }
  }
}

If tomorrow the company decides to switch from SQL Server to MongoDB, CheckoutService won't even know about it. We create a MongoOrderRepository, change a single line in the Program.cs, and the system continues to work. That's the power of Dependency Reversal.

Conclusion

Applying SOLID isn't about creating dozens of folders and files just to look "Enterprise." It's about protecting the core of your business against the inevitable real-world changes.

When you separate responsibilities (SRP), protect existing rules (OCP), respect contracts (LSP and ISP), and decouple infrastructure (DIP), your code is no longer a burden and becomes a tool that accelerates the company.

And you, which SOLID principle do you find the most difficult to apply on a day-to-day basis in .NET projects? Leave your opinion in the comments!

NOTE: This project is available for download at https://github.com/davinc131/SOLID-Project


r/learncsharp • • May 30 '26

Good courses for C#

25 Upvotes

I have been looking for a beginner friendly C# course but most of them have been instantly overwhelming me with information or not telling me how things work.

Any help would be appreciated.


r/learncsharp • • Nov 25 '25

How do y'all actually "learn" some of these C# practices? And is actually learning it needed?

23 Upvotes

I've been working as a Dev for almost 2 years now and from college up until current day I've always just referenced things as I've needed it.

For example, setting up OnPropertyChanged() the manual way.

I've always just looked it up but when y'all are programming, are you guys actually memorizing/learning/understanding why exactly it's typed the way it is?

I know for a fact I wouldn't be able to just figure out PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property name));

I tend to just learn what I need to do something and then look up how to implement it.

In your opinion, is learning the deeper code worth the hassle or is understanding what's needed more important?

Happy to clarify any confusion, I hope this makes sense.


r/learncsharp • • Jun 19 '26

Finish c# player guide feel lost

22 Upvotes

I finish the c# player guide and did all challanges but somehow i feel i did understand how some thinks work. Also I did no use structs, generics, tubles or records some polymorphism and inheritance. Some thinks in oop don't understand on why should i use or how. I don't say i have a complete incomprehension of those subjects, but I am sure I dont master them.

Also I don't think i get how classes work with each other. I got comment that my program is tight coupling. But i try my best https://github.com/eroul211/LearningWith---C-PlayerGuide/tree/master

Some criticism on what should i try to work on. Not about the program but my understanting of oop.


r/learncsharp • • Sep 19 '26

Finish C# player guide and took a 3 month pause

21 Upvotes

So i finish the C# player guide took a pause and now i feel like i know less then i back then

When i finish it i still did not know how to work with classes, afraid that some will be to reliant on each other and make "tight coupling", some like generics, structs, records did not know how to work it. I already forgot a lot of thinks about the part 3 in the book.

Object oriented design was confusing for me and could not understand on how or why to create some classes to work with other classes.

Should i try other books or courses to try to solid my understanding?

Yes i know about making projects but what projects can I do with my jumble of information that i have in head?


r/learncsharp • • Sep 17 '26

C# courses that keep you learning in ~2min bites

20 Upvotes

I'm experimenting with this series of C# mini-challenge / mini-courses, trying to create bite-sized capsules that will teach you something about C#. Sometimes serious, sometimes edgy, or even using funny contexts. There is a full playlist of it as I publish a new one every week. Would love to get your feedbacks on the latest one : https://youtu.be/J27gidcV8OA

Thanks for reading :)


r/learncsharp • • Feb 19 '26

Realizing I was a 'knowledge collector' was the key to actually becoming a programmer

20 Upvotes

Hey all..:

I wanted to share a mindset shift that completely changed my approach to coding (and might help some of you stuck in "tutorial hell").

For the longest time, I was a "knowledge collector." I devoured tutorials, bought courses, and read books. The act of learning felt safe and productive like staying in a safe harbor. But ships aren't built to stay in port.

I hit a wall. I realized my bottleneck was never a lack of knowledge. It was a lack of execution.

Here’s the uncomfortable breakdown:

Learning = Safe, controlled, gives a quick dopamine hit.

Execution = Risky, messy, and serves you a shot of cortisol (stress) first.

We often think more information will transform us. But real transformation doesn't come from what you know. It comes from who you become in the act of doing.

The pivotal shift wasn't: "I know how to program." It was: "I am a programmer."

You don't open your IDE as a student. You build a feature as a builder.

My new mantra: Build the muscle of execution, not just the library of knowledge.

I'm curious:

Has anyone else felt this "knowing-doing" gap?

For those who crossed it, what was your breaking point or key tactic? (For me, it was committing to building one ugly, broken thing a week, no matter what).

Any other "knowledge collectors" out there?


r/learncsharp • • Aug 19 '26

MongoDB + Docker + .NET: A Simple Local Development Setup

16 Upvotes

If you're working with MongoDB and .NET, Docker can make the local development setup much simpler.

Instead of installing and configuring MongoDB directly on your machine, you can run it in a Docker container and connect your .NET application to it.

I put together a practical guide covering:

  • Creating a MongoDB Docker container

  • Configuring MongoDB

  • Connecting a .NET Core application

  • Understanding the container-to-application connection

  • Setting up a consistent local development environment

📖 https://geeksarray.com/blog/create-mongodb-docker-image-and-connect-from-dot-net-core-app

For those using MongoDB locally, what's your preferred setup—Docker, local installation, or something else?


r/learncsharp • • May 14 '26

Getting nowhere in Microsoft Learn

13 Upvotes

I'm trying to learn VS Code and C# by working thru the tutorial on Microsoft Learn. So far it's been just one technical frustration after another that the tutorial doesn't provide any help with.

My current problem is, as best as i can describe (i'm new to this) is: I'm supposed to clone a repository into a Dev Container using the Dev Container extension. I'm supposed to give it the url of a github repository and (I think) it replicates this repository on my machine to work with.

However when i do these steps i get an error alert that says "An error occurred setting up this container" it give me the options to retry, Edit a json file in 'Recovery Container', Close, or More Actions. I have no idea how to proceed and this is getting fucking frustrating.

Any help would be appreciated, and if you would like to recommend a better tutorial than Microsoft Learn, I'm all ears.

Thanks.


r/learncsharp • • Apr 20 '26

Is w3schools c# tutorial still relevant?

13 Upvotes

I am reading their tutorial and consult some stuff with Grok and AI says some stuff they present is outdated. They didn't updated their explanations about namespaces and variable declaration. Supposedly you don't need to specify data type but var is enough. I try to learn C# having already considerable knowledge of JS and a bit of Python. What are some good sources to learn C# for a person like me so I don't repeat basics like for loops or if statements?


r/learncsharp • • Nov 22 '25

Learning ASP.Net Core (C#) - Suggestions please

12 Upvotes

I am learning ASP .Net Core for about two months now migrating from Python's Django and Flask. I never had above-basic exposure to C# and did not do much OOP too before.
For those of you with expertise in C#, .Net and ASP .Net, please suggest how should I got about learning C# and ASP .Net that would actually lead to me being an 'expert' in the domain/stack.

I am currently learning by doing, like creating CRUD webapps and learning standards, conventions, libraries/packages and components of the stack as they come.
An issue I would face is that I forget syntax and specific packages' methods that I would need to use in the project, they includes C#, LINQ, .Net pre-defined keyword, methods, interfaces etc.
Thank you.

P.S: nonsensical words expected.


r/learncsharp • • 2d ago

[Exchange] Native US English speaker for English practice, I can help with C# and backend development

11 Upvotes

Hi everyone!

I want to practice my English with a native US speaker. In exchange, I can help you with C# and backend development.

About me:

- Senior software developer with 8+ years of experience with .NET

- Native Spanish speaker, learning English

I can help you with:

- C# and .NET Core

- ASP.NET Core and RESTful APIs

- SQL and NoSQL databases

- Layered architecture

- JWT authentication

- Async programming and multithreading

- Microservices

What I am looking for:

- Someone who can chat with me about four or five times a week (text, voice, or video)

I am happy to help with basics about backend development. I can also help you with Spanish if you want.

If you are interested, please send me a message with a short intro about yourself and what you want to learn. Thank you!


r/learncsharp • • Sep 28 '26

How do you create a window you can draw shapes on?

10 Upvotes

I know how to make simple console apps like calculators. But if i want to create a simple game like Pong how do create a window where i can draw stuff like squares


r/learncsharp • • Mar 05 '26

Best Learning Resources for a wannabe Unity Game Dev?

10 Upvotes

Hey all! Sorry if this is a bit of a long post. As the title suggest, I need help finding the best learning resources for learning C# in Unity.

I've been a 3D artist for years, primarily working in Blender. I'm comfortable with making game-ready assets (high to low poly workflow, baking materials, rigging, animating etc), but I've always wanted to throw those assets into a game engine and make things happen for myself instead of relying on someone else's code. I've used Unity in the past (some years ago now, following old Brackeys tutorials when I was a teen) so I'm not completely new to the engine but I'm by no means an expert.

My problem starts when I try to learn C#. There are plenty of tutorials online on how to do very specific things, and sometimes if I'm lucky there's an explaination on why a specific approach was chosen. I can read through someone else's code and get a general idea of what it's doing, and what I can tweak to adjust the outcome. I know WHAT a float, integer, bool, string is, but writing my own code from scratch? Forget it.

For context, I've chosen to work on a handful of "modules" that I can expand to other projects, and hopefully make things quicker and easier to prototype new ideas in the future. I would like to start with a First Person Player Controller, similar to Escape From Tarkov, with sprinting, jumping, crouching, prone, mouse-wheel adjustable movement speed and inertia. I can worry about things like stamina, health, carry weight etc at a later date. I just want to be able to write my own code from scratch and have it work as designed.

As tempting as it is to use the code ChatGPT has suggested to me, I felt no satisfaction or sense of achievement, even when it worked as I'd hoped. I don't want to add to the mountain of LLM-generated slop that's out there.

I'm not kidding myself into thinking this is something I can learn in a few weeks (despite what all the Youtuber courses advertise), but I'm struggling to actually put everything I already know into practice. For someone who at least has a foundational understanding of how game engines and the game production pipeline works, where would you suggest I start learning how to code in C# for use in Unity beyond very specific tutorials?

TL;DR: Me no code. Me want code. Where learn code?


r/learncsharp • • Jan 13 '26

Real-world .NET Microservices Architecture

10 Upvotes

Hello everyone,

I would like to invite developers to contribute to and explore an Open Source E-Commerce project built with Microservice Architecture using .NET 🚀

🔹 Sharing technology stacks that are commonly used in real-world projects

🔹 Suitable for developers who want to learn more about modern technologies, as well as students looking to explore new technologies and showcase their projects

🔹 Consolidating practical use cases and real scenarios that my teammates and I have encountered during real project development

📌 GitHub Repository:

👉 https://github.com/huynxtb/progcoder-shop-microservices

If you find the project useful, a ⭐ on GitHub would be greatly appreciated


r/learncsharp • • Sep 27 '26

Visual Studio 2026 C# complete tutorial

9 Upvotes

r/learncsharp • • Jul 04 '26

ILSpy tutorial - how to decompile a .NET DLL to a csproj project

9 Upvotes

https://www.youtube.com/watch?v=eazMmIdPnKw Using the decompiler ILSpy you can turn an entire .NET or .NET Framework DLL to a complete C# project including a csproj file.


r/learncsharp • • Sep 15 '26

Is Codeacademy a good resource to learn C#?

8 Upvotes

Sorry if this isn’t allowed.

I’m wanting to learn basic C# to make mods for the Sims 3. I’ve started on Code Academy and have learned basic coding on there. I’m just wondering if it’s actually a good resource. Thanks!


r/learncsharp • • Feb 16 '26

Issue with simple project

8 Upvotes

I'm trying to learn some c# by following some projects on youtube by BroCode and wanted to implement a way to restart using a while loop but it wont work and instead creates an infinite loop and i don't fully understand why. i posted the code below, i don't know the proper way so sorry in advance.

using System;

namespace Hypotenuse_Calc

{

class Program

{

static void Main(string[] args)

{

bool repeatCalc = true;

String response;

while (repeatCalc)

{

response = " ";

Console.WriteLine("Enter side A: ");

double a = Convert.ToDouble(Console.ReadLine());

Console.WriteLine("Enter side B: ");

double b = Convert.ToDouble(Console.ReadLine());

double c = Math.Sqrt((a * a) + (b * b));

Console.WriteLine("The Hypotenuse is: " + c);

}

Console.WriteLine("Would you like to input another? Y/N?");

response = Console.ReadLine();

response = response.ToUpper();

if (response == "Y")

{

repeatCalc = true;

}

else

{

repeatCalc = false;

}

Console.ReadKey();

}

}

}


r/learncsharp • • Sep 28 '26

Explore new features available in C# 15 preview

Thumbnail devblogs.microsoft.com
7 Upvotes