您的位置:程序门 -> .net技术 -> c#



求助:这段c#语句最后为什么不显示10 20 100 200?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求助:这段c#语句最后为什么不显示10 20 100 200?
发表于:2007-09-05 21:21:03 楼主
using   system;
namespace   test
{
        public   class   myclass
        {
                public   int   value;
                public   static   void   testref(ref   myclass   m)
                {
                        m.value   =   10;
                }
                public   static   void   testnoref(myclass   m)
        {
                        m.value   =   20;
                }
                public   static   void   testcreateref(ref   myclass   m)
        {
                m   =   new   myclass();
                m.value   =   100;
        }
                public   static   void   testcreatenoref(myclass   m)
        {
                m   =   new   myclass();
                m.value   =   200;
                }      
        public   static   void   main()
        {
                        myclass   m   =   new   myclass();
                        m.value   =   1;
                        testref(ref   m);
                        console.writeline(m.value);
                        testnoref(m);
                        console.writeline(m.value);
                        testcreateref(ref   m);
                        console.writeline(m.value);
                        testcreatenoref(m);
                        console.writeline(m.value);
                }
        }
}
编绎执行最终的输入结果为:10     20   100   100

不太明白第四个为什么不显示200,方法体内声明的类外界不能访问吗?可是调用语句跟方法同在一个类中!!!!!
发表于:2007-09-05 22:38:341楼 得分:0
方法内
m   =   new   myclass();
如果没有ref或out,则不会传回给调用的方法。
发表于:2007-09-05 23:36:182楼 得分:0
方法内既然使用   new   class(),   那么   m   所指向的就不是原先的那个实例了。已经变成了全新的对象实例了。
更改一个变量就明白了。


                public   static   void   testcreatenoref(myclass   m)
                {
                        //   newobj   的作用域就仅仅是本函数内,
                        //   函数执行完毕,newobj   就被销毁了
                        myclass   newobj   =   new   myclass();
                        newobj.value   =   200;
                }//   退出函数时,newobj   就结束了
发表于:2007-09-10 12:38:023楼 得分:0
谢谢解答!


快速检索

最新资讯
热门点击