-
Notifications
You must be signed in to change notification settings - Fork 0
/
C#_FUNDAMENTALS.txt
117 lines (89 loc) · 3.18 KB
/
C#_FUNDAMENTALS.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# C# Learnings
*SOURCE : [Microsoft Learn-Down the Rabbit hole...](https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/)* :octocat:
## Overview
- This repository contains basic C# programs that demonstrate the fundamental concepts of C#, includes and not limited to :
- Datatypes
- String operations
- Loops
- Data Structures (Arrays, Lists)
- Classes
- The programs are written in Visual Studio 2022 and can be run on Windows, Linux or MacOS
- Also includes assignment from Software Developer Training at Savon Ammattiopisto (SAKKY)
## Table of Contents
- [Fundamentals](#fundamentals)
- [Type System](#type-system)
- [Execution and Program Hierarchy](#execution-and-program-hierarchy)
- [Usage](#usage)
- [License](#license)
## Fundamentals
### C# Features
- Garbage Collection (check Source for more), i.e., automated reclamation of memory occupied by unreachable unused objects
- LINQ, Language Integrated Query, to provide commmon-pattern syntax to work with data from any source
### C# Program Execution
- C# compiles the code to IL (Intermediate Language)
- Code in IL is converted by .NET (CLR-Common Language Runtime & Set of Class libraries) to native-machine instructions by JIT (JustInTime) compilation
### GENERIC CLASS
* Class - collection of methods, Ex. string / List
* Method - specific function inside a Class, Ex.string.Length / List.Count
* Object(Variable using Class) - template of the Class called inside a Program for multiple use, i.e., instance of a class
* Example 1 - calls string Class and saves string fiveStars as "*****"
```sh
string fiveStars = new string("*", 5);
```
* Example 2 - List class is called to create a new object "genericArray". All items are saved in it
```sh
List<var> genericArray = new List<var>() { 32, "randy", 21.4, "2.1325", True }
```
## TYPE System
* RECORD, used to define any of the TYPES for storage and minimal associated behavior (for ex. record struct, record class, etc.)
* VALUE TYPES (Immutable)
* Simple (int, short, float, double, decimal, bool, char)
* Enum
* Struct (similar to class, but inherits from Object)
* Nullable
* Tuple
* REFERENCE TYPES (Mutable)
* Class
* Unicode Strings (string)
* User-defined
* Interface (possible Network Programming feature)
* Array
* Delegate (equivalent to Decorators in Python)
## Program Structure/Hierarchy
* PROGRAMS (multiple Files and/or namespaces)
* NAMESPACES (holds Classes, Properties and everything included in the Program)
* TYPES (Value & Reference, ex. Class, Array, int, string, etc.)
* MEMBERS (Methods, Properties)
* ASSEMBLIES (Metadata, ex: .exe or .dll files)
### Standard Skeleton of C# Program
using System;
namespace YourNamespace
{
class YourClass
{
}
struct YourStruct
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
enum YourEnum
{
}
namespace YourNestedNamespace
{
struct YourStruct
{
}
}
class Program
{
static void Main(string[] args)
{
//Your program starts here...
Console.WriteLine("Hello world!");
}
}
}