为了账号安全,请及时绑定邮箱和手机立即绑定

为什么运行结果是4岁,5岁,4岁????

            Child child = new Child("刘小明", 3, Gender.女);

            int age = 3;

            Growth(child);//直接调用静态方法,类是引用类型,修改形参,实参child也被修改

            Growth(child.Age);//int是值类型,修改形参,实参未改变-----》??????但是为什么运行结果和视频中的不一样,我的改变了

            //Growth(ref age);

        }

        static void Growth(Child c)

            {

                c.Age++;

                Console.WriteLine("我是A方法,我今年{0}岁了",c.Age);

            }

          static void Growth(int age)

            {

               age++;

                Console.WriteLine("我是B方法,我今年{0}岁了", age);

            }

        static void Growth(ref int age)//???为什么跟视频中的相反,ref不是能使值类型按照引用类型传参,为什么颠倒了

        {

            age++;

            Console.WriteLine("我是C方法,我今年{0}岁了", age);

        }


正在回答

3 回答

题主好像对方法理解有点错误啊,第二步,你的输出语句在方法里面,当你传的值是4,++之后肯定会变成5,这个时候输出肯定是5啦

视频的输出都是写在方法调用之后,而不是方法体里面

0 回复 有任何疑惑可以回复我~

代码第二步 Growth(child.Age);视频中一样的方法输出却是4岁,说传入的int类型是值类型,也就是复制副本,实际参数并未改变。

0 回复 有任何疑惑可以回复我~

代码第一步 Growth(child); 此时child.Age为new Child("刘小明", 3, Gender.女);中所赋值的3。在static void Growth(Child c)中运行    c.Age++;为4岁。

代码第二步 Growth(child.Age); 此时传递为第一步中运行后的结果4  所以传入方法中的参数就是4。在 static void Growth(int age) 中运行 age++; 为5。

代码第三步 Growth(ref age);传递的值 为 int age = 3;  因此 static void Growth(ref int age)中  age++;结果为4。

0 回复 有任何疑惑可以回复我~
#1

慕侠2341482 提问者

代码第二步 Growth(child.Age);视频中一样的方法输出却是4岁,说传入的int类型是值类型,也就是复制副本,实际参数并未改变。
2019-01-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么运行结果是4岁,5岁,4岁????

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信