代码如下:  
 class Client
     {
         public static void MainF()
         {
             papa pa = new papa(); 
             Derived d = new Derived();
             int m = 111;
             d.p=pa;
             Console.WriteLine(d.p.iq.ToString());
             pa.iq = 0;
             Console.WriteLine(d.p.iq.ToString());
             d.mm = m;
             Console.WriteLine(d.mm.ToString());
             m = 50;
             Console.WriteLine(d.mm.ToString());
         }
     }输出为:
100
0
111
111ps:为什么一般变量就不会受外部影响?    class papa
    {
      private  int _iq = 100;
        public int iq
        {
            get { return _iq; }
            set { _iq = value; }
        }
    }     class Derived 
     {
         private int m = 10;
         private papa pq;
         public papa p
         {
             get { return pq; }
             set { pq = value; }
         }
         public int mm
         {
             set { m = value; }
             get { return m; }
         }
     }

解决方案 »

  1.   

    pa.iq = 0;  你改变的是变量吗?你改变的是变量的成员
                Console.WriteLine(d.p.iq.ToString());
                d.mm = m;
                Console.WriteLine(d.mm.ToString());
                m = 50; 
      

  2.   

        static class Program {        static void Change1(StringBuilder sb) {
                sb = new StringBuilder(sb.ToString() + "abc");
            }
            static void Change2(StringBuilder sb) {
                sb.Append("abc");
            }        /// <summary>
            /// 应用程序的主入口点.
            /// </summary>
            public static void Main(string[] args) {
                StringBuilder sb = new StringBuilder("str_");
                Change1(sb);
                Console.WriteLine(sb.ToString());
                Change2(sb);
                Console.WriteLine(sb.ToString());
            }
        }
    这个……
      

  3.   

    恩,就算是变量的成员。
    pa.iq = 0;
    但为什么我在外部改变这个对象的属性时,d.p里面的也会被改变?
      

  4.   

    soaringbird 恩,就算是变量的成员。 
    pa.iq = 0; 
    但为什么我在外部改变这个对象的属性时,d.p里面的也会被改变?
      

  5.   

    pa只是这个对象的地址,d.p也是,它们是一样的,你有了这个地址,你当然就可以对它进行操作了
      

  6.   


    但为什么一般变量的传递就不会?
        d.mm = m; 
    m在外部的改变却不影响d的引用?请问如果我要在d里把p对象保存起来,该如何实现?
    谢谢。