星空网 > 软件开发 > ASP.net

C#基础知识学习

做了1年多了C#,发现些项目过程中很多基础东西都不是很清晰,基础不够牢固。现在开始复习基础知识并做重点记录

方法需要被重写的时候,可以在方法前加入virtual使方法变成虚方法。

这样我们可以重新写个方法对虚方法进行重写需要加上override。
注意:成员字段和静态函数都不能声明为virtual,因为这个概念支队类中的实例函数成员有意义。
 
1. 重写override:基类方法声明为virtual(虚方法),派生类中使用override申明此方法的重写.
在重写方法中,有个特殊方法,base.<MethodName>(),这里的MethodName是父类的方法名。

class MyAlass:Base2
{
public override void ClassB()
{
base.ClassB();
Console.WriteLine("a.ClassB()");
}
}


直接在子类重写方法中加载父类方法。
结果是
C#基础知识学习
 

C#基础知识学习
2.隐藏 : 基类方法不做申明(默认为非虚方法),在派生类中使用new声明此方法的隐藏。
 自己的理解:
向下转型继承,子类new覆盖父类的方法,在调用方法的时候,显示和调用的是父类的方法而不是子类的方法。
子类override重载父类方法,在调用方法的时候,调用的是子类的方法。相当于删除了父类的方法
     说白了:new是覆盖,override是重载,“覆盖”并不意味着“删除”,但“重载”意味着“删除”,这就是“覆盖”和“重载”的区别  

例子:
//基类1 
class Base
{
public void ClassA()
{
Console.WriteLine("Base.ClassA()");
}
}


//子类覆盖基类方法
class MyClass:Base
{
public new void ClassA()
{
Console.WriteLine("c.ClassA()");
}
}


 

//基类2
class Base2
{
public virtual void ClassB()
{
Console.WriteLine("Base2.ClassB()");
}
}


//子类重写基类2的方法
class MyAlass:Base2
{
public override void ClassB()
{
Console.WriteLine("a.ClassB()");
}
}


//主程序
class Program
{
static void Main(string[] args)
{
Base b1 = new Base();
b1.ClassA();
Base c = new MyClass();
c.ClassA();
Console.WriteLine("\n");
Base2 b2 = new Base2();
b2.ClassB();
Base2 a = new MyAlass();
a.ClassB();
 
Console.ReadKey();
}
}


 


运行结果:

C#基础知识学习

C#基础知识学习




原标题:C#基础知识学习

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

印度尼西亚快递专线:https://www.goluckyvip.com/tag/90574.html
冈比亚专线:https://www.goluckyvip.com/tag/90575.html
利比亚专线:https://www.goluckyvip.com/tag/90576.html
新西兰物流专线:https://www.goluckyvip.com/tag/90578.html
新西兰专线物流:https://www.goluckyvip.com/tag/90579.html
波兰邮政:https://www.goluckyvip.com/tag/9058.html
17万件月销量!Wildplus Beauty香薰身体精华油大热趋势 :https://www.kjdsnews.com/a/1836305.html
17万件月销量!Wildplus Beauty香薰身体精华油大热趋势 :https://www.goluckyvip.com/news/186214.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流