Thursday, November 15, 2018

Advanced C# terms explained

Below I list some of the most important notions in advanced C# along with their explanations. The explanations are intended to be as concise as possible, and most of them are 12 sentences long. The list is constantly growing.

If you want to know a bit more about some concept and see real-life examples, search this blog or click a link if it is placed next to the explanation.

Abstraction hiding (or omitting) inessential information while extracting information which is common to a group of objects and invariable. For example, if a washing machine was an instance of a class (an object), the buttons available to its user are "public," while certain mechanisms are hidden or "private" and can only be accessed by experts.

Anonymous method a method without a name, used in a variable of delegate type.

Delegate a data type which allows passing a method as a parameter of another method. It includes three essential pieces of information: (1) the address of a method to which it points; (2) the parameters of the method; (3) the return type of a method.

Dependency injection passing an object (often called a service or a dependency) to a client (a dependent object) which can use this object. Read more.

Design pattern a universal solution to recurring architectural project problems in software development.

Encapsulation in object-oriented programming, encapsulation consists in hiding (selected) fields or methods of the objects of a class, so that only the other methods of that class or friend functions can access these fields or methods.

Generics "T"-elements, where the T's are placeholders in the definition of a class which are replaced with a specific type during compile time. Generics can be used in the fields or methods of the class, in the method parameters, and so on.

Inheritance the relationship in which a class implements (inherits) the features of another class or interface. Inheritance uses the IS-A relationship, e.g. a cat IS-A mammal, which means that a cat inherits the features of a mammal.

Interface a structural contract which a class inheriting the interface must follow. Read more about the difference between an interface and an abstract class in C#.

Inversion of Control (IoC) – a design pattern based on the principle that objects should not attempt to receive the required dependencies itself, but those dependencies should rather be provided to them by something which is "outside" of the object. Traditionally, the object used to receive the dependencies itself, so this approach is an "inversion."

LINQ (Language INtegrated Query) .NET technology to query objects such as: objects implementing the IEnumerable<T> interface, databases and their components, and XML.

ORM (Object-Relational Mapping) – the term usually refers to a mapping tool which allows representing the structure of relational tables in an object-oriented language.

Polymorphism the object's feature of having many forms. Polymorphism may be static (function overloading and operator overloading) or dynamic (specified at run-time).

Reflection a way of obtaining metadata of types dynamically (at run-time). Namespace to use: System.Reflection.

SHA-1 a hash generated by Git for every file/directory and stored in the system's database. It is a 40-character string of hexadecimal characters, i.e. 09 and af.

Tuple a finite, ordered sequence of elements which could be of various types and allows nesting.

Virtual method a complete method which can be used in an inheriting class, and may as well be overridden, which means that the logic of the method can be changed in the inheriting class.

No comments:

Post a Comment