标题:关于值传递的问题
只看楼主
sanri
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-3-1
 问题点数:0 回复次数:3 
关于值传递的问题

public class Test
{
public int ss(int i)
{
int x;
x = -i;
return x;
}

}

class Demo
{
public static void Main()
{
Test ob = new Test();

int a = 15;
ob.ss(a);

Console.WriteLine(a);
}
}

这样a的值还是15,向方法传递值参数时、子程序的形参的改变不影响实参。
但是这段我还是不理解啊,为什么我return x,却没有任何改变呢,55
如果我想自己定义一个x的相反数应该怎么写呢?

搜索更多相关主题的帖子: public return 子程序 影响 
2006-03-01 17:46
sonyejin
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-1-26
得分:0 

public class Test
{
public int ss(int i)
{
int x;
x = -i;
return x;
}

}

class Demo
{
public static void Main()
{
Test ob = new Test();

int a = 15;
ob.ss(a);
int b=ob.ss(a);

Console.WriteLine(a);
}
}
加上这句试一下;


我打开钱包,选中一张100元钱,然后不停的按crtl+v
2006-03-01 17:52
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
得分:0 

int 类型是值类型,在作为参数时传递的是值而不是地址引用,所以

class Demo
{
public static void Main()
{
Test ob = new Test();

int a = 15;
ob.ss(a);
int b=ob.ss(a);

Console.WriteLine(a);
}
}
中的a是不会改变值的,但是在ss()函数中已经生成了一个新的变量,并且做为返回值返回给调用方的b了.
这时再输出b就是-15了


2006-03-01 22:29
sanri
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-3-1
得分:0 
[CODE]

呵呵,谢谢楼上两位了。

class Demo
{
public static void Main()
{
Test ob = new Test();

int a = 15;
ob.ss(a);
int b=ob.ss(a);

Console.WriteLine(b);
}
}

这样就可以了!


我是一只coding菜鸟,不过我爱学习,发奋!努力!嘻嘻
2006-03-02 10:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-47846-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019223 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved