Я думаю не многие знают в каких местах можно применять this (намекаю на пункт 4):
это ссылка на текущий объект (Me в VB, Self в Delphi)
class Foo
{
public DoIt() : int { this.GetHashcode() }
}
это имя конструктора
class Foo
{
public this() { Console.WriteLine("Hi from constructor!") }
}
это макрос объявления метода расширения, он может применяться только к первому аргументу статического метода:
module Foo
{
public SomeUsable(this x : array[int], y : string) : object { ... }
}
А еще это алиас типа которому принадлежит объявление (удобно использовать в макросах):
class Foo
{
public Equals(other : this) : bool { ... }
}
В примере this будет алиасом к Foo. Аналогичное поведение в случае, когда this применяется для уточнения типа:
def f : this = ....
1) Что я упустил?
2) Дополним и выложим в вику?