当前位置:编程学习 > C#/ASP.NET >>

初学者问题

using System;

public class Sample 

    public string i = "000";


public class test 


     public static void Main() 
         { 
           object obj1; 
           obj1 = "aaa"; 
           Console.WriteLine(obj1);
            obj1 = new Sample(); 
            Sample obj2; 
             obj2 = (Sample)obj1;
            //obj2 can have i.   obj1  no  i option
// why obj1 doesnt have "i", but obj2 has "i" Console.WriteLine(obj2.i); obj1 = "bbb"; Console.WriteLine(""); if(obj1.Equals(obj2)) {Console.WriteLine("same value");} if (obj1==obj2) { Console.WriteLi ne("same reference"); } Console.ReadLine(); }

}




问题如上,用手机发的,没缩进,求解答。 --------------------编程问答-------------------- 断点跟进
obj1为{ObjString.Sample} --------------------编程问答-------------------- obj2 = (Sample)obj1;
为什么要做个类型转换呢?因为obj1是object类型,而不是Sample类型 --------------------编程问答-------------------- why obj1 doesnt have "i", but obj2 has "i"
因为obj2在声明的时候是Sample类型,所以有i,而obj1是Object类型,object类中并没有i这个字段(虽然obj1也是sample类型装箱的) --------------------编程问答-------------------- object 是所有类的超类,也就是Sample也是继承object的,Sample是object的子类,Sample里的属性Object里当然没有啊 --------------------编程问答-------------------- 楼上都正解 +1
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,