C# 2.2 继承/base关键字/面试题/转化/三参的输入与输出/is/as

本文深入探讨C#中的继承机制,解释子类如何继承父类的共有成员,并详细阐述base关键字的使用。同时,文章分析了值类型与引用类型的区别,包括它们在内存中的存储位置和转换规则。此外,还重点讨论了不同类型的转化,如值类型间的隐式和强制转化,引用类型与值类型间的装箱拆箱,以及引用类型的向上和向下转型。最后,介绍了is和as关键字在类型检查和转换中的应用,为C#开发者提供了面试和实践中的关键知识点。
摘要由CSDN通过智能技术生成

1.继承:

1>子类继承父类 就继承父类的共有成员的方法

2>如果子类中有和父类同名的方法 那么在执行过程中会优先执行子类的方法

2.base 关键字:(用于无参构造,直接跳转this参数)

无参构造不管有没有用   建议都写上

3.(面试) 值类型和引用类型的区别

1>值类型再栈中引用类型的数据再内存堆中 而栈中保存了引用类型数据在堆中的地址

2>值类型继承自System.valueType引用类型继承自System.object

3>System.valueType间接的继承自System.object

4>值类型存储数据快,引用类存储速度慢

4.转化(强制转化 隐士转化)      

1>//值类型和值类型之间的转化   //类型转化 

  //小范围转大范围是隐式类型转化

            int num1 =100;

            long num2 =num1;

            //大范围转小范围是强制类型转化

            long num3 = 1;

            intnum4 = (int)num3;

2>(面试)          //引用类型和值类型之间的转化  装箱拆箱操作 

//object是所有类的父类   值类型继承自ValueType      +

//值类型也间接的继承制object

            intnumber1 = 100;

            objectnumber2 = 2000;

            object stu = newStudent();

            object arr = newint[5];

            object stuArr= newStudent[7];

            Console.WriteLine(stu);

            Console.WriteLine((int)number2 + number1);

3>//引用类和引用类型之间的转化   里氏转化

            //将子类转化成父类   向上转型

            Animal anim =newDog("");

            anim.Shout();

            //将父类转化成子类  向下转型

            Dog dog1 =(Dog)anim;

            dog1.Shout();

 

 

 

7.三参的输入与输出


5.面试 is/as

*is是做了一次判断 返回结果是一个bool类型的值 如匹配返回true 否则返回false

* is只做判断 并没有强制转化

* as 是直接将类型转化 如果转化成功 则将父类转化子类 否则返回null

* as 再盘对岸的时候就直接转化了

for (int i = 0; i < animals.Length; i++)

            {

                判断aniamal[i]是否是Dog类型

                //if (animals[i] is Dog)

                //{

                //    //如果是Dog类型则使用向下转型

                //   ((Dog)animals[i]).Shout();

                //}

                //else if (animals[i] is Cat)

                //{

                //   ((Cat)animals[i]).Shout();

                //}

                Dog dog =animals[i] asDog;

                if (dog!=null)

                {

                    dog.Shout();

                }

                Cat cat =animals[i] asCat;

                if (cat!= null)

                {

                    cat.Shout();

                }

           }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值