标题:函数 的 参数 和 返回值
只看楼主
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
结帖率:91.67%
已结贴  问题点数:20 回复次数:9 
函数 的 参数 和 返回值
学习C# 中,总是对函数的 参数 和 返回值 不能透彻理解。

求教 老师大侠:
1.函数 的 参数 和 返回值 关系 是什么?
2.有时候 返回值 就是 返回该函数的参数;有时候 返回值 好像与参数无关。

我理解的是:参数是函数(方法)运算所要的参考值,以便根据需要求得结果;返回值就应该是该函数(方法)运算后的值,这样理解对吗?

多谢老师的帮教,谢了先!
搜索更多相关主题的帖子: 函数 
2012-06-13 21:09
heliyi
Rank: 4
来 自:安徽省黄册市
等 级:业余侠客
帖 子:44
专家分:260
注 册:2011-7-29
得分:4 
理解基本正确

函数可以有多个参数,也可以无参数;可以有返回值也可以无返回值。


int getint(string inval)
{
return 0;
}
inval为参数,0为返回值。
2012-06-13 23:09
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
以下是引用heliyi在2012-6-13 23:09:35的发言:

理解基本正确

函数可以有多个参数,也可以无参数;可以有返回值也可以无返回值。


int getint(string inval)
{
return 0;
}
inval为参数,0为返回值。
感谢 heliyi 老师的指导!

我也常看到 return 0,但不知为什么?麻烦您讲讲好吗?

有时后返回的是该函数的参数值,这又是什么情况呢?

多谢您了!
2012-06-14 08:44
zxg6652330
Rank: 2
等 级:论坛游民
威 望:1
帖 子:17
专家分:79
注 册:2012-6-12
得分:4 
以下是引用heliyi在2012-6-13 23:09:35的发言:

理解基本正确

函数可以有多个参数,也可以无参数;可以有返回值也可以无返回值。


int getint(string inval)
{
return 0;
}
inval为参数,0为返回值。
int getint(string inval)需要一个返回一个int类型的值   所以用到了 return 0;
如果是:void getint(string inval)  就不需要return 值了。
2012-06-14 09:32
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
得分:4 
out修饰的参数就是返回值,其他的无关。
2012-06-14 11:49
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:0 
返回值是否需要,要根据你的程序设计需求决定,可以返回一个值,也可以返回一个对象的引用。
无需返回值的成员函数你可以声明为void型的函数。
比如说我们要返回一个园的面积大小,可以定义一个
double GetCircleArea(int radio)
{
    const double pi = 3.1415926;
    return radio * radio * pi;
}

我们要打印这个大小,可以写一个
void output(void)
{
    int radio = 3;
    Console.Write("Area = {0}", GetCircleArea(radio)); //这里同名的radio和函数定义相同,表明函数的参数radio仅仅是一个形式上的参数,形参,仅供函数内部引用,与传进来一个名叫radio的变量没有关系,转进来的也可以是其它变量名或是一个数值。
}

但我们也可以改变output函数,令其返回一个值表示函数执行成功与否。可以用int 也可以用bool,用于表示状态的int一般有三态,-1, 0 , 1,用哪种表示某个错误全在于你自己的设计意图,bool只有两种状态,true和false;
例如bool output(void)
{
    string input;
    input = Console.ReadLine();
    try
    {
        Console.Write("Area = {0}", GetCircleArea(Convert.ToInt32(input))); //输入可以转换成整数就打印面积。然后返回真
        return true;
    }
    catch(Exception ex)
    {
        return false;    //转换失败就返回假。
    }
}

我们都在路上。。。。。
2012-06-14 13:23
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
得分:4 
通常API函数返回0表示成功,返回非0,表示失败,可以通过查询错误码得知函数调用失败的原因,不过你没有学过,了解一下既可。

我们都在路上。。。。。
2012-06-14 13:33
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
多谢楼主老师们的指导。
在本坛上 受益匪浅啊!
2012-06-15 21:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:4 
所谓“函数”,就是执行的一个过程,在面向对象的编程语言中,函数表现为方法或事件,其实跟普通的C函数是一样的原理,与BASIC之类的函数和过程(过程与函数其实是同一种东西的不同名称)也一样。

不妨把函数理解为组织(公司)要完成一个项目,为完成这个项目,需要执行一系列的动作和过程,这些任务被分解到每一个具体的部门(类)中,每个部门又逐级分解,直到个人,个人也有若干不同的动作序列,仍然归他安排。这一系列分解下来的任务,就以函数的形式实现。通常,公司或部门发出指令,都需要得到某种回复,以掌握实施情况,回复的手段可以多种多样。比如负责实施的部门(或个人),比如要求司机在什么时间之内到达什么位置接到什么人,你作为发出这个任务指令的管理者,如何掌握实施呢?当然,你最关心的是任务是否完成,那么似乎只要得到完成或失败就可以了,但作为精细的管理者,显然不可能就此满足,成功很好办,问题是失败的时候,到底是什么原因导致失败,若是如此的原因,则应该有如此的应对措施,若是如彼的原因,又应该有如彼的应对措施,此时就不能仅仅反馈成功或失败了。那么,你仍然有不同的手段:1.要求把整个执行情况打包反馈回来,这个数据包包含结果、实际时间、实际位置、接到了什么人等等,这个数据包可以用结构体(struct数据类型返回);2.由于你分别签发三个明确的要求(工作票上的栏目),区分时间、位置和对象,可视实际需要,要求务必填写某些栏目,你选择关心的数据来查看,这时,就用所谓的引用参数,让指令自身带回信息;3.有时,任务并非仅仅是完成某种动作,创建新的部门或机构也可能是任务,这样,也要求直接返回创建的对象(有时是执行者自己)。

学编程的时候,是根据自己的管理思想,知道自己想要做什么,寻找这门语言如何实现的技术。是先有思想,后学程序,在模仿现成程序的时候摸索能够实现自己思想的那部分手段,逐渐形成一套完整的管理模式,每个人都不可能相同的,最终的差异也在这里。有了思想,学什么语言都是一样的,都知道自己需要什么,想找什么,查资料也好,写程序也好,都有明确的指导目标。没有这个东西,被强灌别人的模式,吃百家饭,往往是消化不良,甚至连目标都找不着,那样学习,就事倍功半了。

这些,都是根据你的管理思想来定的,这是程序设计中最核心的内容——如何组织指令。最繁琐的具体动作,让训练有素的工人或部门(成熟的类库)自己去完成,不是什么都要你亲自动手的,不要把精力放在那些太具体的细节上,犯不着。你平时的工作,是发现什么机构和人员可以胜任需要的任务,把他们置于随时可以使用的状态,如果真的没有,那就自己做培训,这时才要亲力亲为(那种机会是极少的,当然也绝不会完全没有,或多或少都有这种时候,遇到的时候就要啃硬骨头了)。总之,要站得更高、看得更远,眼光广阔,就不会被眼前的细节束缚。诸葛亮是累死的,就是他太不相信别人,什么事都要自己去做。

[ 本帖最后由 TonyDeng 于 2012-6-16 01:09 编辑 ]

授人以渔,不授人以鱼。
2012-06-16 01:03
learnerok
Rank: 2
等 级:论坛游民
帖 子:387
专家分:47
注 册:2011-5-21
得分:0 
感谢 TonyDeng 老师 的 思想指导!!!

TonyDeng 老师的思想启发 是 学习者 最精要的东西。

我很崇拜 有思想智慧的人!!!
2012-06-17 10:19



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




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

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