- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
class X { protected virtual void F() { Console.WriteLine(X.F); } protected virtual void F2() { Console.WriteLine(X.F2); } } class Y : X { sealed protected override void F() { Console.WriteLine(Y.F); } protected override void F2() { Console.WriteLine(X.F3); } } class Z : Y { // Attempting to override F causes compiler error CS0239. // protected override void F() { Console.WriteLine(C.F); } // Overriding F2 is allowed. protected override void F2() { Console.WriteLine(Z.F2); } } 4、密封类 在类中定义新的方法或属性时,通过不将这些方法或属性声明为 virtual,可防止派生类重写这些方法或属性。 将 abstract 修饰符用于密封类是错误的做法,因为抽象类必须由提供抽象方法或属性的实现的类继承。 当应用于方法或属性时,sealed 修饰符必须始终与 override 一起使用。 由于结构是隐式密封的,因此它们不能被继承。 4、密封类 sealed class SealedClass { public int x; public int y; } class SealedTest2 { static void Main() { SealedClass sc = new SealedClass(); sc.x = 110; sc.y = 150; Console.WriteLine(x = {0}, y = {1}, sc.x, sc.y); } } // Output: x = 110, y = 150 class MyDerivedC: SealedClass {} // Error 4、密封类 密封类和类成员 通过在类定义前面放置关键字 sealed,可以将类声明为密封类。例如: public sealed class D { // Class members here. } 密封类不能用作基类。因此,它也不能是抽象类。密封类禁止派生。 由于密封类从不用作基类,所以有些运行时优化可以使对密封类成员的调用略快。 4、密封类 重写基类虚成员的派生类成员,如方法、字段、属性或事件,可被声明为密封成员。 在后续的派生类中,这将取消该成员的虚效果。方法是在类成员声明中将 sealed 关键字置于 override 关键字的前面。例如: public class D : C { public sealed override void DoWork() { } } 4、密封类 1.3.2 静态类设计 静态类只包含从 Object 继承的实例成员,也没有可调用的构造函数。正确设计静态类的准则: 慎用静态类,静态类只应用作面向对象的框架核心的支持类。 不要认为静态类可无所不包。 Environment 类使用静态类的方式值得学习。 此类提供对当前用户环境的信息的访问。 不要声明或重写静态类中的实例成员。 如果某个类设计了实例成员,则该类不应标记为静态的。 2、分部类与分部方法 可以将类、结构、接口或方法的定义拆分到两个或多个源文件中。 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来。 分部类 分部方法 2.1 分部类 定义拆分类的情况: 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理。 使用自动生成的源时,无需重新创建源文件便可将代码添加到类中。 若要拆分类定义,需使用 partial 关键字修饰符,如下所示: public partial class Employee { public void DoWork() { } } public partial cla
文档评论(0)