async & await two keywords introduce in C# 5.0. Which allowed you to write asynchronous Programming in easily and proper way. Before this writing an asynchronous Programming is complicated with callback function.
Extension is great feature of C# 3.0. It's allow you to extend existing type class with new functionality, without having to sub-class or recompile the old type.
So we can say that Extension methods help us to add new methods to existing types without modifying the original code, inheriting or aggregating ....
Type Casting is the mechanism to convert one data type to another. While type casting of one data type to another, we get exception if the previous one data type is not compatible with the new data type. To avoid this exception, we have IS and AS operator in C# for safe type casting. Let's understand how to use both of them...
IS operator check for Object Type.
AS operator convert between compatible type Object.
Parameters are always passed by value to a method by default.If we want to pass them by reference then we can use either out or ref keyword.
Reference parameters basically never pass the value of a variable used in the method calling, instead they use the variable themselves. Rather than creating a new storage for that variable in the method declaration, the very same storage space is used, so the value of the variable in the member method and the value of the reference parameter will always be the same. Reference parameters require ref modifier as part of both the declaration and the calling.
Output parameters are very much like reference parameters. The variable specified at the time of calling doesn't need to have been assigned a value before it is passed to the called method. When the method is invoked completely we can read that variable as it is assigned by now.
Like reference parameters, output parameters don't create a new storage location, but use the storage location of the variable specified on the invocation. Output parameters need the out modifier as part of both the declaration and the invocation - that means it's always clear when you're passing something as an output parameter.