黑马程序员技术交流社区
标题:
输出问题
[打印本页]
作者:
↖落葉下♀媃媚
时间:
2013-5-2 17:40
标题:
输出问题
本帖最后由 ↖落葉下♀媃媚 于 2013-5-3 10:44 编辑
int val = 2;
Test(val);
Console.WriteLine(val);
Console.ReadKey();
}
static void Test(int val)
{
int temp = 10;
val = temp * 20;
为什么输出结果是2
作者:
HM邱刚权
时间:
2013-5-2 17:51
本帖最后由 HM邱刚权 于 2013-5-2 17:54 编辑
int val = 2;
// Test(val);
// 在这里接受他的返回值
int Number =Tset(val)
//Console.WriteLine(val); //这里输出错误了 他指向了你上面定义的VAL;
Console.WriteLine(Number);
Console.ReadKey();
}
static intTest(int val) // 你若是要获取这个值你要返回出来
{
int temp = 10;
val = temp * 20;
retule val
}
主要是你传参了后没有返回出任何结果!
作者:
金辉
时间:
2013-5-2 18:42
nt val = 2;
Test(val);
Console.WriteLine(val);
Console.ReadKey();
}
static void Test(int val)
{
int temp = 10;
val = temp * 20;//这里的val是局部变量,只在Test()方法里面有效,你上面传下来的只是2,并不是上面定义的val,所以当Test()方法结束
//时val被释放,在上面 Test(val);之后输出的还是第一次定义的val,所以等于2
作者:
陈晖
时间:
2013-5-2 19:21
调用方法Test的时候,传参数val是将值复制了一份给方法中的参数val,
对方法中的参数val进行数据操作,与方法外的val没有任何关系,因此输入的结果是2。
:)
作者:
张伟86
时间:
2013-5-2 22:14
本帖最后由 张伟86 于 2013-5-2 22:16 编辑
因为在你的test函数中,使用的是值复制。即你在test函数中新定义了一个int val,并将main函数中的val值传递给test中这个新建的val,在此之后test中的val就于main函数中的val没有了半毛钱关系;所以在test函数调用完成时,test中的val销毁了,而main函数中的val并没有预料般改变。
你的本意应该要在调用test函数后改变val的值,这时候可以改变函数返回值,return返回需要的数值;或者使用引用类型。引用类型可以使用ref和out关键字,ref在调用前需要初始化,而out不需要。具体代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Person
{
public
int Age;
}
class Program
{
static void Main(string[] args)
{
int refval = 2;
refTest(ref refval);
int outval = 2;
outTest(out outval);
Console.WriteLine(refval);
Console.WriteLine(outval);
Console.ReadKey();
}
static void refTest(ref int val)
{
int temp = 10;
val = temp * 20;
}
static void outTest(out int val)
{
int temp = 10;
val = temp * 20;
}
}
}
复制代码
作者:
闫常国
时间:
2013-5-2 22:28
static void Test(int val)
{
int temp = 10;
val = temp * 20;
}
这里是值传递,所以原来定义的val的值不会发生改变,要想改变val的值就要在参数列表里加上ref或out
static void Test(
ref
int val)
{
int temp = 10;
val = temp * 20;
}
在调用方法时也要加上ref
Test(ref val);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2