Перегружаемые функции имеют одинаковое имя, но разное количество или типы аргументов. Это разновидность статического полиморфизма, при которой вопрос о том, какую из функций вызвать, решается по списку ее аргументов. Этот подход применяется в статически типизированных языках, которые проверяют типы аргументов при вызове функции. Перегруженная функция фактически представляет собой несколько разных функций, и выбор подходящей происходит на этапе компиляции. Перегрузку функций не следует путать с формами полиморфизма, где правильный метод выбирается во время выполнения, например, посредством виртуальных функций, а не статически.
3. Указатели и ссылки. Указатель this.
Указатели в C# это переменные диапазон значений которых состоит из адресов ячеек памяти или специальных значений — нулевых адресов. В C# - указатели могут быть объявлены только для удержания адреса переменной и массива. Указатели объявляются неявно, с использованием символа *, как показано в следующем примере:
int *p; // Или int* p; Данное объявление указателя создает ссылку на начальный адрес памяти целого числа. Звездочка (*) в нашем выражении служит оператором разыменования. Таким образом, мы объявили переменную указателя p, которая содержит в себе адрес переменной типа int. Обратный оператор генерирования ссылки (&), используется для получения адреса переменной.
Указатель this - это указатель на объект, для которого был вызван нестатический метод. Ключевое слово this обеспечивает доступ к текущему экземпляру класса. Классический пример использования this, это как раз в конструкторах, при одинаковых именах полей класса и аргументов конструктора. Ключевое слово this это что-то вроде имени объекта, через которое мы имеем доступ к текущему объекту.