繁体   English   中英

C#中partial关键字的实际使用

[英]Practical usage of partial keyword in C#

我知道它可以让 Visual Studio 将 WinForms UI 代码与 UI 事件等分开。但是它有什么实际用途吗?

partial 关键字通常用于代码生成实用程序中,以允许开发人员向生成的代码添加额外的功能,而不必担心再次生成代码时该代码会被删除。

使用 C# 3,partial 关键字可以应用于方法,以允许生成代码的用户填写生成器留下的空白。 例如,Linq To Sql 设计器提供了部分方法,允许您将逻辑添加到框架在实现时将调用的类。 这里的好处是 C# 编译器将完全删除未实现的部分方法,因此不实现它们根本不会影响性能。

部分类也可用于将非常大的类组织成单独的代码文件,尽管这种用法通常表明您的类太大并且承担了太多责任。

我能想到的 partial 关键字的最佳用途是嵌套类。 如果没有 partial 关键字,所有嵌套类必须在与包含 class 相同的代码文件中的 go。

我发现的一种用途是用于您可能不希望存在于生产代码中的代码,例如跟踪或开发日志记录代码。 您可以将它放在部分 class 中,然后当您进行生产构建时,您只需构建不包含这些部分的内容,编译器将自动神奇地删除对那些被排除的部分的任何调用。

我用它来划分一些方法需要大量代码的辅助类。 这是保持可读性的一种非常简单的方法,因为每个文件只处理类的一部分功能。

在 VB 中,您可以使用它来将“正常”代码与需要通过“Option Strict Off”进行后期绑定的代码分开。

在 C# 中,我只将它用于异常大的类。

LINQ 到 SQL 设计器广泛使用它来拆分映射 class 之外的自定义行为(部分方法)。
简而言之,它的主要目的是用于代码生成器。
希望这可以帮助。

我在 Linq2Sql 中一直使用部分类和方法。 否则,除了 UI/代码隐藏类之外,我从未将它用于其他任何东西。

我喜欢 linq2sql 中的部分类的一大优点是您可以让部分 class 继承一个接口,它将 map 成为生成的 class 的接口。 如果您有多个数据提供者并且仍希望对所有数据访问类使用相同的接口,这将非常有用。

WPF 广泛使用部分类。 XAML 生成可以添加到的部分 class。

当我知道我们将有几个开发人员在一个 class 上工作时,我使用部分类来减少版本控制的合并痛苦。 例如,我们经常将 DAL class 拆分为几个部分 class 文件。 如果您不将它们放在不同的文件中,则很容易出现合并冲突,这些冲突在签入版本 ctl 时需要一段时间才能修复。

随着 class 接近完成,开发变得不那么混乱时,我们会删除部分文件。 我们只是用它来简化 VC/多开发人员的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM