我想确保我只在特定的类中为一个实例上的事件订阅一次.
例如,我希望能够做到以下几点:
if (*not already subscribed*)
{
member.Event += new MemeberClass.Delegate(handler);
}
Run Code Online (Sandbox Code Playgroud)
我该如何实施这样的警卫?
如何,在我的WinForm应用程序的主要形式内,我可以判断是否有任何模态窗口/对话框打开属于主窗体?
可能重复:
在C#中重载复合赋值运算符的简单方法?
我正在玩事件,思想事件很奇怪.为什么我不能在泛型类中实现它们.所以我试着发现我不能超载+ =.从这里找到的语言规范
The overloadable unary operators are:
+ - ! ~ ++ -- true false
The overloadable binary operators are:
+ - * / % & | ^ << >> == != > < >= <=
Run Code Online (Sandbox Code Playgroud)
+ =未列出.现在,在你说没有理由重载之前+ =我想提出事实C#有使用+ =运算符的事件以及我试图实现一个有趣的事件并希望使用+ =运算符的事实.现在,我有一种感觉,有人会说这就是为什么事件存在,因为这是唯一的原因.但是我想提出你可以使用+ =与TimeSpan结构.去试试吧,var ts= new TimeSpan(); ts += ts;将编译并运行.
我查看了TimeSpan的定义,我不知道它是如何允许的.我看到了一个public static TimeSpan operator +(TimeSpan t);看起来很可疑的东西,但后来我意识到它var name = +ts;就像你怎么能做到var name = -ts;否定一样.
所以我的问题是,我如何使用+ =作为我的结构或类.它似乎得到支持我似乎无法找到它的文档.