我刚刚使用Dustin Campbell的WeakEvent类为项目添加了一个弱事件实现.虽然盲目使用Code I Found On The Internet™通常是一个坏主意,但它的实现要比我之前一起攻击的好得多.到目前为止它似乎运行良好,但为了理解代码,我遇到了以下情况:
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泛型类型,但我从来没有见过@this之前(和谷歌搜索这是可以理解的绝望).
Stu*_*art 31
@符号允许您在代码中转义标识符.
见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");
   }   
}
想在代码审查中看到一个!
Ode*_*ded 29
这@this意味着您可以将关键字this用作变量.
这T只是第一个开放的泛型类型WeakEventHandler<T, E>.