Ответ 1
@this
означает, что вы можете использовать ключевое слово this
в качестве переменной.
T
- это просто первый открытый общий тип WeakEventHandler<T, E>
.
Я только что добавил слабую реализацию события в проект, используя класс Dustin Campbell WeakEvent. Хотя слепо с использованием кода, который я нашел в Интернете и торговле; как правило, плохая идея, это гораздо лучшая реализация, чем то, что я ранее взломал. Кажется, что это хорошо работает до сих пор, но, чтобы понять код, я натолкнулся на следующее:
public class WeakEventHandler<T, E> : IWeakEventHandler<E>
where T : class
where E : EventArgs
{
private delegate void OpenEventHandler(T @this, object sender, E e);
...
Я использую объявление типов делегатов только с аргументами object sender
и EventArgs args
, так что же делает цель T @this
? Очевидно, что он объявляет что-то типа WeakEventHandler
T
generic, но я никогда не видел @this
раньше (и googling это, по понятным причинам, безнадежно).
@this
означает, что вы можете использовать ключевое слово this
в качестве переменной.
T
- это просто первый открытый общий тип WeakEventHandler<T, E>
.
Символ @позволяет вам избежать идентификаторов внутри вашего кода.
См. MSDN -
Правила для идентификаторов, приведенные в этом разделе, точно соответствуют правилам, рекомендованным Стандартным Приложением 15 Юникода, за исключением того, что подчеркивание разрешено в качестве начального символа (как это традиционно на языке программирования C), escape-последовательности Unicode разрешены в идентификаторах, а символ "@" разрешен в качестве префикса для включения ключевых слов в качестве идентификаторов.
http://msdn.microsoft.com/en-us/library/aa664670(VS.71).aspx
Они дают этот прекрасный пример побега:
class @class
{
public static void @static(bool @bool) {
if (@bool)
System.Console.WriteLine("true");
else
System.Console.WriteLine("false");
}
}
Хотелось бы увидеть это в обзоре кода!