我无法理解的问题。答案是b),但有人可以告诉我为什么吗? 我意识到这是a)和b)之间的事情。但为什么b)?如果事件提升方法是公开的,那么任何人都无法举起活动吗?
您已在班级中声明了某个活动,并且您希望班级的外部用户举起此活动。你是做什么? 一个。 将活动公之于众。 B. 向您的类添加一个引发事件的公共方法。 C。 使用公共委托而不是事件。 D. 使用自定义事件访问器来授予外部用户访问权限。
答案 0 :(得分:6)
这个问题为您提供了两条信息:
- 您已在您的课程中声明了一个事件,
- 您希望您班级的外部用户举起此活动。
醇>
现在阅读答案,看看它们与给你的信息有什么关系:
一个。将活动公之于众。
是否将公开活动设为公开,以帮助班级以外的用户举办活动?不,它没有:它让他们听你的事件,但它不会让他们举起事件。
℃。使用公共代理而不是事件。
这是红鲱鱼:声明公共代表是宣告活动本身的一部分,因此它无助于外部用户举办活动。
d。使用自定义事件访问器来授予外部用户访问权限。
这类似于回答a
:让用户访问某个活动并不能帮助他们提升。
湾在您的类中添加一个引发事件的公共方法。
这是问题的直接答案:你想让用户举起一个事件,所以你设计了一种方法来做到这一点。
答案 1 :(得分:4)
a)和b)之间的区别在于,在C#中 - 按设计/其规范 - 事件只能从声明它们的类中提出,而不是在外部编码。
如果您将事件声明为public,则外部代码将能够订阅/取消订阅该事件。但不要提高它。尝试这样做最终会导致编译错误。
因此,如果您希望外部代码引发事件,则应该公开一个公共方法来实现这一点。
c)不是一个很好的答案。它类似于说:揭露公共领域而不是公共财产。
d)自定义访问者({add; remove;})不会改变任何情况。