C#具有部分类的概念。我见过的一个实例是WSDL
s。 Visual Studio可以联系服务器以查找服务,并根据它自动生成部分类。然后Visual Studio将为您提供一个空白的部分类来匹配它,以便您可以添加自己的代码。
我觉得这种做法相当令人困惑。部分类优于继承是否有任何优势?
答案 0 :(得分:6)
部分类用于解决特定问题 - 解决分离生成和手工编程代码的问题。如果没有部分类,程序员就需要避免修改生成的类,或者rely on a design pattern来实现分离。
一个非常重要的一点是部分类的生成部分具有实现。这使它们与不包含实现的接口区分开来。
从某种意义上说,这使得它们类似于抽象类,而不会使它们变得抽象。您可以在不对其进行子类化的情况下扩展和更改功能。
答案 1 :(得分:1)
部分班级:
您可以在同一项目中的多个文件中定义一个类。您最终可能会创建一个包含方法的文件,另一个文件包含属性,等等。在编译时,它与创建一个包含所有内容的大文件相同。
Read more about partial class and method
<强>继承:强>
您可以在同一项目或另一个项目中扩展现有类的功能。通过继承,您可以在新类上扩展现有类的功能,特性等。
答案 2 :(得分:0)
同意的部分类更多的是关于在多个源文件中拆分类定义而不是继承。
在我看来,它们的主要原因是框架可以为您生成样板代码,您也可以添加方法,而不会被Visual Studio为数据访问或Web服务生成所创建的内容所覆盖
对我而言,微软总是显得头脑迟钝和懒散。
答案 3 :(得分:0)
这是邀请开发人员在部分类的第二个声明中根据需要实现方法 您可以通过压缩大型类来更好地维护应用程序。假设您有一个具有多个接口的类,因此您可以根据接口实现创建多个源文件。易于理解和维护源文件具有部分类的接口。我们来看看以下代码段。
public interface IRegister
{
//Register related function
}
public interface ILogin
{
//Login related function
}
//UserRegister.cs file
public partial classUser : IRegister, ILogin
{
//implements IRegister interface
}
//UserLogin.cs file
public partial classUser
{
//implements ILogin interface
}