C#EXAM概念指导

时间:2014-07-22 17:52:43

标签: c#

我无法理解的问题。答案是b),但有人可以告诉我为什么吗? 我意识到这是a)和b)之间的事情。但为什么b)?如果事件提升方法是公开的,那么任何人都无法举起活动吗?

您已在班级中声明了某个活动,并且您希望班级的外部用户举起此活动。你是做什么? 一个。 将活动公之于众。 B. 向您的类添加一个引发事件的公共方法。 C。 使用公共委托而不是事件。 D. 使用自定义事件访问器来授予外部用户访问权限。

2 个答案:

答案 0 :(得分:6)

这个问题为您提供了两条信息:

  
      
  1. 在您的课程中声明了一个事件,
  2.   
  3. 希望您班级的外部用户举起此活动。
  4.   

现在阅读答案,看看它们与给你的信息有什么关系:

  

一个。将活动公之于众。

是否将公开活动设为公开,以帮助班级以外的用户举办活动?不,它没有:它让他们听你的事件,但它不会让他们举起事件。

  

℃。使用公共代理而不是事件。

这是红鲱鱼:声明公共代表是宣告活动本身的一部分,因此它无助于外部用户举办活动。

  

d。使用自定义事件访问器来授予外部用户访问权限。

这类似于回答a:让用户访问某个活动并不能帮助他们提升。

  

湾在您的类中添加一个引发事件的公共方法。

这是问题的直接答案:你想让用户举起一个事件,所以你设计了一种方法来做到这一点。

答案 1 :(得分:4)

a)和b)之间的区别在于,在C#中 - 按设计/其规范 - 事件只能从声明它们的类中提出,而不是在外部编码。

如果您将事件声明为public,则外部代码将能够订阅/取消订阅该事件。但不要提高它。尝试这样做最终会导致编译错误。

因此,如果您希望外部代码引发事件,则应该公开一个公共方法来实现这一点。

c)不是一个很好的答案。它类似于说:揭露公共领域而不是公共财产。

d)自定义访问者({add; remove;})不会改变任何情况。