我在问这个,因为我发现分发类定义是一个相当危险的特性,所以如果你知道它的全部内容,你无法真正确定。即使我找到三个部分定义,我怎么知道这里没有第四个地方?C# - “部分”类有什么好处?
我是新的C#,但已经花了10年,C++,也许这就是为什么我动摇了?
无论如何,“部分”的概念必须有一些很大的好处,我明显缺少。我很想了解更多关于它背后的哲学。
编辑:对不起,错过this duplicate当搜索现有的职位。
我在问这个,因为我发现分发类定义是一个相当危险的特性,所以如果你知道它的全部内容,你无法真正确定。即使我找到三个部分定义,我怎么知道这里没有第四个地方?C# - “部分”类有什么好处?
我是新的C#,但已经花了10年,C++,也许这就是为什么我动摇了?
无论如何,“部分”的概念必须有一些很大的好处,我明显缺少。我很想了解更多关于它背后的哲学。
编辑:对不起,错过this duplicate当搜索现有的职位。
部分类在使用代码生成时非常方便。如果你想修改一个生成的类(而不是从它继承),那么当代码重新生成时,你可能会冒失去更改的风险。如果你能够在一个单独的文件中定义你的额外方法等,这个类的生成的部分可以重新创建,而不需要加上手工制作的代码。
+ 1 - 事实上,Visual Studio附带的表单构建器工具使用了这一特性。 – ConcernedOfTunbridgeWells 2009-09-18 10:02:11
最大的好处是隐藏计算机生成的代码(由设计者)。
Eric Lippert最近有一篇关于partial-keyword的博客文章。
另一个用法是给嵌套类自己的文件。
两个人编辑同一个班级,并自动生成的设计器代码是两个直接的功能,我可以看到,被部分的类和方法解决。
有设计师在一个单独的文件中生成的代码是很多更容易比1.1,在那里你的代码可以通常可以通过Visual Studio的错位(在Windows窗体)一起工作。
Visual Studio仍然使设计器文件,代码背后和设计文件与ASP.NET同步混乱。
编辑同一类的两个人应该使用版本控制,而不是部分类。 – svinto 2009-09-18 10:04:22
或者两者兼而有之,如果它是一些拥有1000行代码的巨大遗留类,则可以节省合并头痛。 – 2009-09-18 10:14:17
我并不是建议这是正确的工作方式,但这是部分类背后的想法之一:http://msdn.microsoft.com/en-us/library/wa80x488(VS.80).aspx – 2009-09-18 10:20:12
的另一点是,当一个类实现多个接口,你可以指出错误文件分割的接口实现。
所以每个代码文件只有属于接口实现的代码。它根据分离关注的概念。
如果你有某种荒谬的大班,由于某种原因不能或不允许在逻辑上分裂成更小的类,那么你可以将它们至少在物理分解成多个文件,以便更有效地与它的工作的。本质上,您可以一次查看小块,避免上下滚动。
这可能适用于可能是由于一些神秘的政策是不允许乱用,因为纷繁根深蒂固的依赖现有的API遗留代码。
不一定是最好的使用部分类的,但肯定给你一个备用选项组织代码,您可能无法以其他方式修改。
也许为时已晚,但请让我补充我的2美分太:
*。当工作在大型项目中,在不同的文件中传播的一类允许多个程序员同时在它的工作。
*。您可以轻松地为VS.NET生成的类编写代码(用于扩展功能)。这将允许您编写自己需要的代码,而不会混淆系统生成的代码
“我怎么知道没有第四个地方?” 这里的问题不是部分类,而是缺乏对正在编译的项目的了解。 – mackenir 2009-09-18 09:57:15
http://stackoverflow.com/questions/612831/practical-usage-of-partial-keyword-in-c – 2009-09-18 10:15:16
@mackenir:尝试将该参数与分配给100000多行代码项目的维护开发人员进行比较。 – sharkin 2009-09-18 13:53:38