佳佳的博客
Menu
首页
IT
生活
学生
游戏
随机
C#关键字及其对组件版本控制的影响
IT
C#
《CLR via C#》
2018-05-15
目录
# C#关键字及其对组件版本控制的影响 ## 类型 - `abstract` 表示不能构造该类型的实例 ```cs abstract class AbstractClassA : Object { /// <summary> /// 虚方法 /// </summary> public virtual void MethodA() { Console.WriteLine($"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"); } /// <summary> /// 抽象方法 /// </summary> public abstract void MethodB(); /// <summary> /// 实例方法 /// </summary> public void MethodC() { Console.WriteLine($"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"); } } ``` - `virtual` (不允许) - `override` (不允许) - `sealed` 表示该类型不能用作基类型 ```cs sealed class SealedClassA { } ``` 如果继承该类会报如下错误: ``` 无法从密封类型“SealedClassA”派生 ``` - `new` 表示该成员与基类中相似的成员无任何关系(仅可修饰嵌套类型) ```cs class NestClass { new class SubNestClass { } } ``` 上述代码会有警告,不清楚何种情况下使用 `new` 修饰 `class` 才能没有警告。 > 成员“NestClass.SubNestClass”不会隐藏可访问成员。不需要关键字 new。 ## 方法/属性/事件 - `abstract` 表示为了构造派生类型的实例,派生类型必须重写并实现这个成员 - `virtual` 表示这个成员可由派生类型重写 ```cs class ClassA { public virtual void MethodA() { Console.WriteLine($"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"); } } ``` - `override` 表示派生类型正在重写基类型的成员 ```cs class ClassB : ClassA { public override void MethodA() { Console.WriteLine($"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"); } } ``` - `sealed` 表示这个成员不能被派生类型重写,只能将该关键字应用于重写虚方法的方法 ```cs class ClassB : ClassA { public sealed override void MethodA() { Console.WriteLine($"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"); } } ``` - `new` 表示该成员与基类中相似的成员无任何关系 ```cs class ClassC : ClassB { public new void MethodA() { Console.WriteLine($"{MethodBase.GetCurrentMethod().DeclaringType.Name}.{MethodBase.GetCurrentMethod().Name}"); } } ``` ## 常量/字段 - `abstract` (不允许) - `virtual` (不允许) - `override` (不允许) - `sealed` (不允许) - `new` 表示该成员与基类中相似的成员无任何关系 ```cs class ClassB : ClassA { public string Name; } ``` ```cs class ClassC : ClassB { public new string Name; } ```
版权声明:原创文章,未经允许不得转载。
https://www.liujiajia.me/2018/5/15/c关键字及其对组件版本控制的影响
« 《无双大蛇2:终极版》全仙界武器入手方法
微信小程序API wx.authorize 中的 scope.userInfo 被废弃 »
昵称
*
电子邮箱
*
回复内容
*
(回复审核后才会显示)
提交