Частная собственность под названием @this, которая возвращает это - PullRequest
1 голос
/ 20 марта 2009

Я знаю, что префикс строкового литерала C # с @ помечает его как дословный строковый литерал, но какой цели это будет полезно, если перед ним стоит имя частного свойства?

Это появилось в каком-то коде, который я поддерживал ...

public class JourneyBuilder
{
    // ...

    private JourneyBuilder @this
    {
        get { return this; }
    }

    // ...
}

Может кто-нибудь предложить обоснование для этого?

Редактировать

Полагаю, на самом деле это два вопроса (на один из которых уже дан ответ). Второй: почему у вас есть частная собственность, которая просто возвращает this?

1 Ответ

3 голосов
/ 20 марта 2009

Это способ "экранирования" зарезервированного ключевого слова, чтобы вы могли использовать его в качестве идентификатора. По большей части лучше просто придумать другое имя, чем использовать этот подход, но компилятор C # допускает это.

Что касается примечания, единственное место, где я видел его, где оно имеет смысл, - это когда вы называете параметр экземпляра метода расширения следующим образом:

public static void Foo(this Object @this)
{
    // ...
}

Но даже в этом случае было бы так же хорошо назвать параметр source или что-то такое же, что указывает на его природу.

Относительно того, почему вам когда-либо понадобится личное свойство, которое возвращает this: , нет никаких причин когда-либо делать это . Вы предоставляете только закрытый метод для доступа к уже доступной ссылке. К счастью, поскольку участник является частным, вы можете легко удалить его.

...