“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 sender
和EventArgs args
参数声明委托类型,那么这个部分实现的是什么? 显然它是在宣告WeakEventHandler
的T
generics类型,但我以前从未见过@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"); } }
想在代码审查中看到一个!