
00:00 - 03:55 Out
03:56 - 16:27 Ref
16:28 - 27:31 In
00:00 - 12:33 Value Tupple
12:34 - 20:35 (Referenced) Tupple
20:36 - 34:49 Readonly Struct
34:50 - 40:29 Recap
00:00 - 12:24 Structures
12:25 - 17:41 Enums
00:00 - 34:56 Task 1
00:00 - 34:30 Task 2
00:00 - 08:34 Int
08:35 - 22:19 String
00:00 - 15:21 - Classes
00:00 - 12:15 Equals()
12:16 - 19:05 GetHashCode()
09:37 - 15:11 Double Polymorphism
00:00 - 06:26 Constraints in generic classes
06:27 - 08:33 Constraints in generic methods
Prepare for epicness...
00:00 - 29:55 Task 1 (Reflection and Interfaces)
00:00 - 09:15 Delegates - understanding and initializing them
09:16 - 31:26 Func, Action, Predicate
00:00 - 14:14 Delegates in classes
00:00 - 12:00 Events - understanding and initializing them
12:00 - 14:13 && 24:20 - 26:00 Removing delegates from events
14:14 - 16:40 Get results from multiple delegates (MulticastDelegate)
16:41 - 29:16 Wire delegates to events easier
00:00 - 09:32 Events in classes
09:33 - 12:15 Virtual methods and delegates
00:00 - 06:00 Streams
00:00 - 42:30 Five ways of writing/reading from files
06:01 - 10:43 First way (try-catch-finally)
10:44 - 12:17 Second way (using)
12:18 - 16:29 Third way (read a text file per line)
16:30 - 37:55 Fourth way (File class and stream)
37:56 - 40:04 Fifth way (the laziest one)
00:00 - 24:13 Task 1
00:00 - 36:26 Task 2 (Building interfaces, classes, contexts and managers)
00:00 - 44:58 Task 2 (Event Manager class, Program class)
00:00 - 03:23 Simple lambda expressions and anonymous functions in delegates
03:24 - 08:50 LINQ example with lambda expression
08:51 - 12:15 Thread example with lambda expression
00:00 - 07:35 Two types of syntax
07:36 - 11:24 Chaining LINQ methods
11:25 - 22:45 Investigating System.LINQ methods
00:00 - 02:46 Intro
02:47 - 04:36 First query
04:37 - 06:13 Second query
06:14 - 11:46 Third query
11:47 - 15:49 Fourth query
15:50 - 17:49 FirstOrDefault vs Take behaviour
17:50 - 29:42 Fifth query (grouping of data)
29:43 - 36:49 Second way of grouping data
36:50 - 41:29 Joining entities with LINQ (bonus query)
This course will start with the explanation of intricacies between out, ref and in keyword. Then the students will learn about new data types (tuples and structures) – when and why they shall be used. After grasping all of the preceding knowledge there shall be no mistakes when students use value or reference types. The late-bounding (enabled by various techniques of polymorphism – inheritance, object, dynamic, generics and reflection) opens new doors that will be explored in this course in theory and practice.
The topics about delegates and events are very interesting and usually difficult for new developers. The concept of holding as a reference a method is something common to functional programming but C# allows you to get the advantages of that feature too. The students that will finish this course won’t have problems in understanding when and how to use delegates. The Event-driven Design (EDD) is based on the work with events and delegates (wired to them). Coupling EED with the knowledge and characteristics of OOP will help students build web, mobile and graphical applications in the near future/courses easily.
The last two important concepts that will be taught in this course are lambda expressions and LINQ. Understanding how they work will improve not only the development speed of different tasks/algorithms but will give the students opportunity to grasp the clever use of delegates, generics and the so called ‘Fluent API’ – a technique that will be used later (when we separate and specify our components/libraries of the n-tier application and/or use ORM such as EF Core).
Before we start making multi-tier applications a strong foundation of knowledge, skills and experience with solving simple tasks are necessary. This course is the third stepping stone towards achieving that goal.
I hope that my students will be benevolent toward each other in the Q&A section of the courses and be successful in their future career as a software developer (and engineer).