C# (pronounced "C-sharp") is a modern, object-oriented programming language developed by Microsoft in 2000. It is designed for building Windows desktop applications, but it can also be used for web and mobile development. C# is based on C++ and Java and is similar in syntax to both languages. C# is widely used for developing Windows applications, Web Services and Windows Phone applications. It is also commonly used in game development using the Unity game engine. It is a powerful and flexible language that is easy to learn and use.
Overview
- Introduction to .NET Framework
- .NET Framework (Basic Architecture and Component Stack)
- Managed code and Unmanaged code in .NET
- Managed vs Unmanaged Code
- CIL or MSIL
- .NET Framework Class Library (FCL)
- Introduction to C#
- Setting up the Environment in C#
- How to Install and Setup Visual Studio for C#?
- Evolution of C#
- Hello World in C#
- How to Execute C# Program on cmd (command-line)?
- Main Method
- Getting Familiar With Visual Studio
- Common Language Runtime(CLR)
- Architecture of Common Language Runtime (CLR)
- JIT(Just-In-Time) Compiler
- Garbage Collection
- Windows Form Applications
- C vs C#
- C++ vs C#
- Java vs C#
- Python vs C#
- Interesting Facts about C#
- Type System Unification in C# .NET
Fundamentals
- Identifiers
- Data Types
- Variables
- Types of Variables
- Implicitly Typed Local Variables – var
- Dynamic Type in C#
- var vs dynamic
- Binary Literals and Digit Separators
- Scope of Variables
- Access Modifiers
- Constants or Literals
- Operators
- Command Line Arguments
- Boxing and Unboxing
- Boxing vs UnBoxing
- Params in C#
- Comments in C#
- Type Casting or Type Conversion
- Enumeration in C#
- Properties in C#
- Nullable Types
- Structures
Important Keywords
- Keywords
- as Keyword
- is Keyword
- Is vs As operator keyword
- static keyword
- typeof Keyword
- Difference between readonly and const keyword
- ref keyword
Control Statements
- Decision-Making Statements
- Switch Statement
- Loops
- Foreach Loop
- Jump Statements(Break, Continue, Goto, Return and Throw)
OOP Concepts
- Class and Object
- Nested Classes
- Difference between Class and Structure
- Early and Late Binding
- Overloading of Constructors
- Inheritance in C#
- Encapsulation in C#
- Abstraction in C#
- this keyword
- Static Class
- Partial Classes
- Shallow Copy and Deep Copy
- Different ways to create an Object
- Object and Collection Initializer
- Accessing structure’s elements using Pointers
Methods
- Methods
- Method Overloading
- Method Returning an Object
- Method Parameters
- Runtime(Dynamic) Polymorphsim
- Method Overriding
- Method Hiding
- Method Overriding vs Method Hiding
- Optional Parameters
- Different ways to make Method Parameter Optional
- Out Parameters with examples
- Difference between Ref and Out keywords
- Anonymous Method
- Partial Methods
- Extension Method
- Local Function
Delegates
- Delegates
- Predicate Delegate
- Action Delegate
- Func Delegate
- Constructors
- Constructors in C#
- Default Constructor
- Copy Constructor
- Private Constructor
- Constructor Overloading
- Static Constructors vs Non-Static Constructors
- Invoking an overloaded constructor using this keyword
- Destructors
Arrays
- Arrays
- Jagged Arrays
- Arrays of Strings
- Using foreach loop in arrays
- Array Class
- Sorting an Array
- Length of an Array
- Array.BinarySearch() Method
- Check if two array objects are equal or not
- Number of elements in a specified dimension of an Array
- LongLength property of an Array
- Rank of an Array
- Passing Arrays as Arguments
- Implicitly Typed Arrays
- Object and Dynamic Arrays
- Array IndexOutofRange Exception
- Different ways to sort an array in descending order
ArrayList
- What is ArrayList?
- How to create the ArrayList?
- ArrayList Class
- Array vs ArrayList
- Adding the elements to the end of the ArrayList
- Removing all the elements from the ArrayList
- Removing a range of elements from the ArrayList
- ArrayList to Array Conversion
- Copying the entire ArrayList to a 1-D Array
- Copying the entire ArrayList to 1-D Array starting at the specified index
- Check if two ArrayList objects are equal
String
- String
- Verbatim String Literal – @
- String Class
- String Class Properties
- How to use strings in switch statement
- StringBuilder in C#
- String vs StringBuilder
- Length of the StringBuilder
- Remove all characters from StringBuilder
- Check if two StringBuilder objects are Equal
- Capacity of a StringBuilder
Tuple
- What is Tuple in C#?
- Tuple Class
- Tuple<T1> Class
- Tuple<T1,T2> Class
- Tuple<T1,T2,T3> Class
- Tuple<T1,T2,T3,T4> Class
- Tuple<T1,T2,T3,T4,T5> Class
- Tuple<T1,T2,T3,T4,T5,T6> Class
- Tuple<T1,T2,T3,T4,T5,T6,T7> Class
- Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> Class
ValueTuple
- What is ValueTuple in C#?
- ValueTuple Struct
- ValueTuple <T1> Struct
- ValueTuple <T1,T2> Struct
- ValueTuple <T1,T2,T3> Struct
- ValueTuple <T1,T2,T3,T4> Struct
- ValueTuple <T1,T2,T3,T4,T5> Struct
- ValueTuple <T1,T2,T3,T4,T5,T6> Struct
- ValueTuple <T1,T2,T3,T4,T5,T6,T7> Struct
- ValueTuple <T1,T2,T3,T4,T5,T6,T7,TRest> Struct
Indexers & Properties
- Indexers
- Multidimensional Indexers
- Overloading of Indexers
- Properties
- Restrictions on Properties
Inheritance
- Inheritance in C#
- Multilevel Inheritance
- Multiple inheritance using interfaces
- Inheritance in Constructors
- Inheritance in Interfaces
- Abstract Classes
- Using sealed class to Prevent Inheritance
- Object Class
Interfaces
- Interface in C#
- How to use Interface References
- How to Implement Multiple Interfaces Having Same Method Name
- Difference between Abstract Class and Interface
- Delegates vs Interfaces
- Explicit Interface Implementation
Multithreading
- Introduction to Multithreading
- Types of Threads
- How to create Threads
- Main Thread
- Lifecycle and States of a Thread
- Thread Class
- Scheduling a thread for Execution
- Check whether a Thread is Alive or not
- Joining Threads
- Terminating a Thread
- Check whether a thread is a background thread or not
- Naming a thread and fetching name of current thread
- Thread Priority in Multithreading
Exception Handling
- Exceptions
- System Level Exception vs Application Level Exception
- How to use Multiple Catch Clause
- Nesting of try and catch blocks
- Using finally
Collections & Generics
- List
- SortedList with Examples
- HashSet
- SortedSet
- Dictionary with Examples
- SortedDictionary
- Hashtable with Examples
- Stack with Examples
- Queue with Examples
- LinkedList
- Hashtable vs Dictionary
- SortedList vs SortedDictionary
Collections Namespace
- C# | Stack Class
- C# | Queue Class
- C# | Array Class
- C# | ArrayList Class
- C# | Hashtable Class
- C# | BitArray Class
- C# | SortedList Class
Generic Namespace
- C# | HashSet<T> Class
- C# | LinkedList<T> Class
- C# | List<T> Class
- C# | SortedSet<T> Class
- Dictionary Class
- SortedDictionary Class
System Namespace
- BitConverter Class
- Console Class
- Convert Class
- Decimal Struct
- Byte Struct
- Char Struct
- Int16 Struct
- Int32 Struct
- Int64 Struct
- UInt16 Struct
- UInt32 Struct
- UInt64 Struct
Specialized Namespace
- C# | ListDictionary Class
- C# | StringCollection Class
- C# | OrderedDictionary Class
- C# | HybridDictionary Class
- C# | StringDictionary Class
What’s New in C# 8.0
- Static Local Function
- Range and Indices
- Range Structure
- Index Struct
Windows Forms
- What is Windows Forms(WF) in C#?
- Button Control
- Label Control
- RadioButton Control
- CheckBox Control
- TextBox Control
- ComboBox Control
- ToolTip Class
- RichTextBox Class
- MaskedBox Class
- NumericUpDown Class
- DateTimePicker Class
- ListBox Class
- GroupBox Class
- FlowLayoutPanel Class