“T @this”在委托声明中的含义是什么?

我刚刚使用Dustin Campbell的WeakEvent类为项目添加了一个弱事件实现。 虽然盲目地使用Code I Found On The Internet™通常是一个坏主意,但它的实现要比我以前一起攻击的好得多。 到目前为止它似乎运行良好,但为了理解代码我遇到了以下情况:

public class WeakEventHandler : IWeakEventHandler where T : class where E : EventArgs { private delegate void OpenEventHandler(T @this, object sender, E e); ... 

我习惯用object senderEventArgs args参数声明委托类型,那么这个部分实现的是什么? 显然它是在宣告WeakEventHandlerTgenerics类型,但我以前从未见过@this (并且谷歌搜索它是可以理解的绝望)。

@this表示您可以将关键字this用作变量。

T只是WeakEventHandler的第一个开放generics类型。

@符号允许您在代码中转义标识符。

见MSDN –

本节中给出的标识符规则完全符合Unicode标准附件15推荐的规则,但允许下划线作为初始字符(在C编程语言中是传统的),标识符中允许使用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"); } } 

想在代码审查中看到一个!