Welcome to CodeProject !
Your question suggests to me that you need to take some to study the essentials, the basics, of .NET and C#. The links in the answer by Sergey above are very good resources for your study.
I suggest you download the excellent (free) book, ".NET Book Zero" by Charles Petzold: [
^], and go through it carefully.
Object Type: Every Class in .NET inherits from the root structure/Type named 'object. What does that mean: it means there is a template for the allocation of memory ... a pointer and other information ... fundamental to the creation of every Class, fundamental to the creation of instances of any Class. Note: Value Types in .NET inherit from ValueType which inherits from Object.
Yes, there are other aspects of what the Object Type is, and how it "works," but those can wait until later. In the future you can study in depth: stack, heap, ValueType vs. ObjectType, boxing/un-boxing, etc.
Dynamic Type (C# >= 4): C# is a strongly typed language where the Compiler must "know" ... at compile time ... the Type of each field, each Class, each Property, each object a method may accept as a parameter, or return as a result.
It is also correct to say C# demands early-binding to compile.
But, there are situations where one would want late-binding, to defer the compiler's allocation of memory and behavior ... to handle the Type at run-time ... based on Type ... why ? ... because you may have objects that you wish to deal with of different Types, and those Types are not known to your program at compile time.
There is a "price" for using late-binding in C# by using the System.Dynamic namespace: the compiler at run-time must resolve the Type using its Name; the allocation of memory and construction of the required internal state with each "new" Type your dynamic structure, or field, has assigned to it. Method calls will be slower.
Good article on late-binding and System.Dynamic here by one of the people at MS who worked on implementing it in C#: [
^].
Now: let's see you get busy, studying, coding, analyzing your code and its behaviors, learning how to debug.