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(); }}
问题如上,用手机发的,没缩进,求解答。
{
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}
为什么要做个类型转换呢?因为obj1是object类型,而不是Sample类型
因为obj2在声明的时候是Sample类型,所以有i,而obj1是Object类型,object类中并没有i这个字段(虽然obj1也是sample类型装箱的)