class A
    {
        private int _Val;
        public int Val
        {
            get { return _Val; }
            set { _Val = value; }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A a = new A();
            a.Val = 100;
            A b = a;
            a.Val = 200;
            a = b;
            Console.Write(a.Val.ToString());
        }
    }说说看,你认为会输出多少?为什么?

解决方案 »

  1.   

    static void Main(string[] args) 
    {
    int a=100;
    int b=a;
    a=200;
    a=b;
    Console.Write(a.ToString());
    }
      

  2.   

    是不是200呀
     A a = new A(); 
                a.Val = 100; 
                A b = a;
    a,b引用的是同一个对象实例
      

  3.   

    对象的空间是在堆上分配,而int变量的空间是分配在堆栈,所以:
    楼主Console.Write(a.Val.ToString())输出是应该是200
    1楼Console.Write(a.ToString())输出应该是100
      

  4.   

    1,200
    2,100class A 
        { 
            private int _Val; 
            public int Val 
            { 
                get { return _Val; } 
                set { _Val = value; } 
            } 
        } 
        class Program 
        { 
            static void Main(string[] args) 
            { 
                A a = new A(); //定义并初始化a实例,在堆栈上分配内存
                a.Val = 100; 
                A b = a;       //线程堆栈上的b实例也指向上面的a实例,也就是指向同一个对象,同一块内存
                a.Val = 200;   
                a = b; 
                Console.Write(a.Val.ToString()); //转来转去还是那个a对象,所以是200
            } 
        } 
    static void Main(string[] args)  

    int a=100; //值类型的,没得说,一个就是一个
    int b=a; 
    a=200; 
    a=b;       //等价于 int b=100;a=b;
    Console.Write(a.ToString()); 所以还是100
    }就理解到这个份上了,欢迎大侠纠正错误。
      

  5.   

    //线程堆栈上的b实例也指向上面的a实例,也就是指向同一个对象,同一块内存
    准确的说应该是b实例的引用也指向a实例
      

  6.   

    1 200
    2. 100
    value type VS reference type
      

  7.   

    C#中  object和string数据类型都是引用类型,数据保存在托管堆,A a和A b引用的是同一个对象,一个变另一个也变;
    基本数据类型是值类型,保存在堆栈,一个变化不引起另一个变化;
    PS:基本类型数组中的每一个元素都是值类型,但是数组对象是引用类型
      

  8.   

    这问题属于c#基础,lz随便找本c#书看看就有了