为什么我需要在c#中使用部分类和虚方法?

gur*_*gui 1 c#

我有一个问题,为什么c#中有一个partial类和一个virtual方法?

我的意思是,当我有一个普通的或抽象的类,然后从它继承或使它偏袒时,有什么区别?

另一个问题是为什么我需要虚拟方法?当我从类继承我也可以覆盖方法,如果我想.

Jon*_*eet 8

部分类:它们主要是允许机器生成的代码在编译时与手动生成的代码组合,以避免滥用继承等.它可以用于其他原因,但这是它们的主要目的.没有更多的源文件"不要编辑这个位 - 它属于设计师"等.

虚方法:不,如果成员未在基类中声明为虚拟(或抽象),则不能覆盖该成员.你可以用它来遮蔽new,但这与覆盖它一样 - 新方法不会被多态调用.


Ode*_*ded 5

部分类和方法允许您跨不同文件传播代码.当您使用代码生成时,这非常有用 - 生成的代码位于一个文件中,可以在没有问题的情况下被覆盖,其余代码可以安全地更改.

至于virtual- 在C#中,如果要覆盖方法,则必须在基类和覆盖类中使用virtual(或abstract)override.没有它们你不能简单地覆盖.

如果你不使用virtual/ abstract而且override你有隐藏/遮蔽方法的危险,这可能是你想要的,也可能不是.使用virtual/ abstractoverride做事情的明确和可预测的.