C#在方法或属性中使用sealed时的操作与原理
来源:互联网 发布:类似弹个车的软件 编辑:程序博客网 时间:2024/06/10 03:01
在《C#高级编程》第100页中间部分提到”要在方法或属性上使用sealed关键字,必需先从基类上把它声明为要重写的方法或属性。如果基类上不希望有重写的方法或属性,就不要把它声明为virtual。“
这一句话有点绕口,研究了很长时间才搞懂,假设一个类MyClass中存在sealed方法MyMethod或sealed属性MyProperty,那么,存在两种可能:
(1)MyClass未显式定义基类,那么.NET默认System.Object类为MyClass类的基类,且在Object类中存在MyMethod或MyProperty,并且它们被声明为virtual,在MyClass类中,MyMethod或MyProperty声明且定义为override。若Object类中不存在MyMethod或MyProperty就会产生编译错误。
namespace test{class MyClass{public sealed override void MyMethod(){}}class Program{public static int Main(){return 0;}}}编译信息如下:test.cs(5,31): error CS0115: “test.MyClass.MyMethod()”:
没有找到适合的方法来重写
(2)MyClass定义基类BaseClass,则在BaseClass类中存在MyMethod或MyProperty,并且它们被声明为virtual,在MyClass类中,MyMethod或MyProperty声明且定义为override。若BaseClass类中不存在MyMethod或MyProperty就会产生编译错误。
using System;namespace Test{class Father{}class Base : Father{public sealed override void MyProperty() { get; set; }}public class Program{static int Main(){return 0;}}}编译信息如下: test.cs(9,31): error CS0115: “Test.MyClass.MyProperty()”:
没有找到适合的方法来重写
0 0
- C#在方法或属性中使用sealed时的操作与原理
- c# 中sealed的用法
- C# sealed 方法
- C#中sealed关键字的作用
- C#中sealed关键字
- C#中sealed关键字
- C#中sealed关键字
- C#中sealed关键字
- C#中sealed关键字
- C#中sealed关键字
- C#中sealed关键字
- C#中sealed关键字
- c# sealed 的用法
- C# sealed的作用
- C# 关键字“this”在静态属性、静态方法或静态字段初始值设定项中无效
- c#中abstract、override、new、virtual、sealed使用和示例
- c#中abstract、override、new、virtual、sealed使用和示例
- c#中abstract、override、new、virtual、sealed使用和示例
- Android从入门到精通第13章:Service应用
- 二分查找下界 下界
- UVA - 409 Excuses, Excuses!
- Linux终端的几个常用快捷方式,记下!
- code signing is required for product type 'Application' in SDK 'iOS 8.1'
- C#在方法或属性中使用sealed时的操作与原理
- hdu 5128 The E-pang Palace(计算几何:暴力枚举)
- 伪静态
- 蓝桥杯 - 核桃的数量
- [Swift]扩展
- 数据结构之线索二叉树
- Binary Tree Level Order Traversal II
- 十一月总结
- LA 6540 Fibonacci Tree