zoukankan      html  css  js  c++  java
  • 20130409和陈讨论面试题

       public abstract class A          

             {                 

                    public A()

                      {                   Console.WriteLine('A');

                      }

                      public virtual void Fun()

                      {

                      Console.WriteLine("A.Fun()");

                      }

                      }

                      public class B: A

                      {

                      public B()

                      {

                      Console.WriteLine('B');

                      }

                      public new void Fun()

                      {

                      Console.WriteLine("B.Fun()");

                      }

                      public static void Main()

                      {

                      A a = new B();

                      a.Fun();

                      }

                      }

    输出a b a.fun()因为在B中public new void Fun(),“new”中表示方法重写,这在父类和子类方法名相同时表示为子类特有的方法

      200 100 100,装箱是,把a的值复制了一份,装起来,让ob指向。就是说此时ob指向的内容与之前的a没关系了,因为此时内存有2份。。。 a=200这句 没有拆箱
    因为a还是int,200也是int , int c=(int)ob;这个才是拆箱 因为ob是引用类型,c是int类型 拆箱与装箱一定是引用类型与值类型之间变化  装箱: 对值类型在堆中分配一个对象实例,并将该值复制到新的对象中。按三步进行。 第一步:新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncBlockIndex)。 第二步:将值类型的实例字段拷贝到新分配的内存中。 第三步:返回托管堆中新分配对象的地址。这个地址就是一个指向对象的引用了。
  • 相关阅读:
    模块和包
    网络基础之网络协议
    计算机硬件知识
    面试题集锦(一)
    二分查找法
    ORM多表操作示例
    Django之URL(路由系统)用法
    用Nginx实现微信小程序本地SSL请求
    [PHP7.0-PHP7.2]的新特性和新变更
    利用Node的chokidar 监听文件改变的文件。
  • 原文地址:https://www.cnblogs.com/xjt360/p/3009673.html
Copyright © 2011-2022 走看看