Can CodeNewbie learn C#? Yes, you can
Tags: dotnet, csharp, codenewbie, beginners
Published: 2020-07-09 22:56:33

This series of post is intended to help CodeNewbie who are interested to learn C# and help them with resources which they need to feel safe and motivated to continue learning C#. The posts will also consider exploring the learning path which one can use to get started.

The motivation for this blog post came from the below tweet. Though the tweet was specific to certain scenario, I wanted to expand more on that tweet through this blog post.

{%twitter 1280959396856684545%}

## Where do I Start?

It is no doubt that there are various free resources which are available to learn C#. But one might feel overwhelmed over time because there are many concepts to learn in C# and one might feel exhausted. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gg922h5zu5r3m6zoljql.jpg)

<span>Photo by <a href="https://unsplash.com/@von_co?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ivana Cajina</a> on <a href="https://unsplash.com/s/photos/long-road?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></span>

So, it is important to make sure that you don't overcommit yourself and stop your journey in the middle. 

### Day 1


>Can you try a google search now - "Is C# object-oriented?"

This is where you will start. Yes, C# is an object-oriented programming language. If you are not familiar with object-oriented programming, I suggest getting to know them before diving into C#. 

[https://www.freecodecamp.org/news/object-oriented-programming-concepts-21bb035f7260/](https://www.freecodecamp.org/news/object-oriented-programming-concepts-21bb035f7260/)


It is important to know about object-oriented programming concepts before diving deep into C#.

Once you get an understanding of the object-oriented aspects it is now time to apply the same learning into C#. This is where you will start to learn the building blocks of C# like Data Types in C#, Classes, Interfaces, Constructors, Inheritance, Polymorphism, Encapsulation and Abstraction.

[https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/object-oriented-programming](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/object-oriented-programming)

[https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-types](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/value-types)

[https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/reference-types](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/reference-types)

Self-Check - At this stage you should be able to answer the below questions. 

1. What is a string? Are strings mutable or immutable?
2. What are value types and reference types?
3. What is a class? Write an example of class?
4. How do you write a method or function in C#?
5. What are class members? 
6. What is a variable and constant in C#?
7. What are access modifiers in C#?
8. How do you write interface in C#?
9. How to implement inheritance in C#?
10. How do you write an abstract class?
11. What is the difference between interface and abstract class?
12. What is the use of keyword virtual?
13. What is a constructor? What are the different types of constructors?

Don't worry about the Hello world now. 

At the end of Day 1 you will be having a basic understanding of building blocks in C#.

It is fine if you are not able to answer all the questions at the end of Day 1. 

>Everyone has their own pace to learn. If it is not Day 1 it can be end of Day 3 but don't stop until you have complete understanding of the building blocks of C#. 

What is more important is to maintain your momentum until you will be able to answer all the above questions confidently.