【问题标题】:Using partial classes使用部分类
【发布时间】:2026-01-12 21:50:02
【问题描述】:

在内存、性能等方面使用部分类是否有任何开销?

如果我们创建一个分部类,我们可以使用反射器识别该类是否是分部??

【问题讨论】:

    标签: c# partial-classes


    【解决方案1】:

    没有。它们被编译成相同的 IL,就好像它们不是部分的一样。这是纯粹编译时的事情 - CLR 甚至不知道它们曾经是部分的。

    请注意,将 partial methods 引入 C# 3 后,该方法甚至不会在 IL 中发出,除非它在其中一个文件中实现。调用和声明都被编译器剥离。

    当然,它可能会使编译器减慢几分之一毫秒的速度:)

    【讨论】:

    • 如果我们创建一个分部类,我们是否可以使用反射器来识别该类是否是分部的??
    • Partial 很像空格,只是涉及到 EOF。编译器会解析它,但在那之后就再也找不到它曾经存在过的痕迹了。
    • @Phoenix:不。唯一能发现的情况是,如果您有调试符号要分析,并发现一些代码来自一个文件,一些来自另一个文件。
    【解决方案2】:

    不,所有类文件都会在编译时合并。

    这是部分类型的msdn article

    每个源文件都包含一个类型或方法定义的部分,并且在编译应用程序时将所有部分组合在一起。

    【讨论】:

      【解决方案3】:

      没有。它们被编译成一个类。它纯粹是一种语言功能。

      【讨论】: