我还没有真正得到部分方法的好处。任何人都可以说明部分方法非常适合解决这个问题吗?请说明部分方法解决的问题
回答
从本质上讲,部分方法最有用的目的是让代码生成系统提供一个API来扩展其属性和方法的功能而不使用继承。
查看任何Linq to SQL数据模型的快速示例。
生成的代码包含部分方法,如果在您自己的部分类中实现,则允许在现有属性中执行验证逻辑,事件通知等。
使部分方法更具吸引力的是,如果您没有在自己的部分类中实现它们,则它们不会被发射到编译代码中,从而提供适度的效率提升。
这里有一个体面的博客条目,演示如何使用的部分方法注入验证逻辑:
据我了解,主要好处之一是有能力的代码生成“存根“,您可以选择是否执行。所以你的代码创建一个部分方法并调用一些验证方法。为了“插入”你的验证,你只需实现部分方法。 “部分”关键字允许相对干净的开发过程。
从Partial Class and Methods (C# Programming Guide)上MSDN:
的局部类或结构可以包含一个局部方法。该类的一部分包含该方法的签名。可选的实现可以在相同的部分或另一部分中定义。 如果未提供实现,则在编译时删除方法和对该方法的所有调用。
部分方法使类的一部分的实现者能够定义类似于事件的方法。 类的其他部分的实现者可以决定是否实现该方法。如果该方法未实现,则编译器将删除方法签名以及对该方法的所有调用。对该方法的调用(包括在调用中对参数进行评估时发生的任何结果)在运行时不起作用。因此,即使未提供实现,部分类中的任何代码都可以自由使用部分方法。如果调用方法但未实现,则不会导致编译时或运行时错误。
部分方法作为自定义生成代码的一种方式特别有用。它们允许保留方法名称和签名,以便生成的代码可以调用该方法,但开发人员可以决定是否实施该方法。就像部分类一样,部分方法可以使由代码生成器创建的代码和由人类开发人员创建的代码一起工作,而无需运行时成本。
在我看来,我会建议避免使用这些,除非你对他们有特殊的需求。
生成的代码。简单而简单,这是他们实施的头号原因。看看像WPF的东西。 UI在XAML中以声明方式完成,“代码隐藏”在C#中。通过使用部分类概念,两个部分是相同的类拆分
问题涉及部分*方法*,但这个答案解决部分*类*。虽然在[同一文章](https://msdn.microsoft.com/en-us/library/wa80x488.aspx)中的MSDN上记录,但它们并不相同。 – DavidRR 2016-04-06 14:54:17
- 1. 部分缺乏标题解决方法
- 2. HEAD请求问题的解决方案
- 3. SnarQube compute()方法内部的问题解决方法null
- 4. 问题与解析OG:类型似乎是无法解决的,请提出明确的解决方案
- 5. android-无法解决方法getSystemService问题
- 6. 解决菜单问题的方法
- 7. 解决Android相关问题的解决方法
- 8. 使用CodeDom的VB.NET部分方法的解决方法?
- 9. javascript-> php加密解密 - 需要说明和方法请
- 10. Bootstrap data-target问题解决方法
- 11. 解决划分问题
- 12. Javascript的setExpression对我来说是最大的问题。任何解决方案来解决这个问题
- 13. removeNodeAfter方法说明
- 14. 解决方法无法重新声明?
- 15. C#新手问题,部分2 - 声明类和方法
- 16. 解决整页不透明问题
- 17. 无法解决codechef问题
- 18. getQauntdate()方法的说明
- 19. 动态规划解决方案的说明
- 20. 需要解决的方法请问如何解决这个错误?
- 21. 说明这个问题
- 22. jqGrid问题:saveRow - 说明
- 23. 请帮忙解决这个mod_rewrite问题
- 24. 请说明申请和调用方法在JavaScript
- 25. 解决问题!
- 26. SQL-Oracle:解决基本问题的困难,第2部分
- 27. 如何解决Firefox的问题切断部分信件
- 28. 在CSS3不透明度转换期间是否有解决字体调光问题的解决方法?
- 29. 方法声明问题
- 30. Json/ajax代码解决方案和一些说明
+1没有意识到未实现的部分方法被编译器删除。 – 2010-08-11 23:37:47