День сто восемнадцатый. #ВопросыНаСобеседовании

Самые часто задаваемые вопросы на собеседовании по C#

8. Можно ли использовать 'this' в статическом методе?

Ключевое слово 'this' в C# является специальным типом ссылочной переменной, которая неявно определяется в каждом конструкторе и нестатическом методе как первый параметр типа класса, в котором она определена.

Мы не можем использовать 'this' в статическом методе, потому что ключевое слово 'this' возвращает ссылку на текущий экземпляр класса, который его содержит. Статические методы (или любые статические члены) не принадлежат конкретному экземпляру. Они существуют без создания экземпляра класса и вызываются с именем класса не по экземпляру, поэтому мы не можем использовать это ключевое слово в теле статических методов, но в случае с методами расширения мы можем использовать его как модификатор параметра метода. Следующий код определяет метод расширения для типа string, который возвращает либо подстроку, либо всю исходную строку, если length больше длины строки (вместо ArgumentOutOfRangeException):

public static string Substr(this string s, int length)

{

if (s.Length >= length)

return s.Substring(0, length);

return s;

}



Источник: https://www.c-sharpcorner.com