慕侠2341482
2019-01-03 12:03
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);
}
题主好像对方法理解有点错误啊,第二步,你的输出语句在方法里面,当你传的值是4,++之后肯定会变成5,这个时候输出肯定是5啦
视频的输出都是写在方法调用之后,而不是方法体里面
代码第二步 Growth(child.Age);视频中一样的方法输出却是4岁,说传入的int类型是值类型,也就是复制副本,实际参数并未改变。
代码第一步 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。
用C#实现封装
78012 学习 · 182 问题
相似问题