A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 化宝峰 中级黑马   /  2013-4-10 10:27  /  2028 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 化宝峰 于 2013-4-22 13:03 编辑

最近在看C#入门经典。
有句话说“部分方法不能有返回值”,请高手通俗的解释下这句话的意思,还有,部分方法在什么情况下适合于使用呢?很是感激了。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

11 个回复

正序浏览
zerochen46 发表于 2013-4-12 19:03
百度上找的答案 ,不知道能不能解释的通,希望有老师能来解答下
部分类和部分方法(又叫分部类 ...

嗯 又学到新的知识点
回复 使用道具 举报
zerochen46 发表于 2013-4-12 19:03
百度上找的答案 ,不知道能不能解释的通,希望有老师能来解答下
部分类和部分方法(又叫分部类 ...

终于看到一个靠谱点的了,谢谢了。不过假设是多人合成的“分部方法”,那到时间调用这个分部方法的时候,方法的执行顺序又会是怎么样的呢?
回复 使用道具 举报
百度上找的答案 ,不知道能不能解释的通,希望有老师能来解答下{:soso_e140:}
部分类和部分方法(又叫分部类,分部方法),是.net 3.0中增加的新特性。

之所以不能有返回值,因为分部方法可以由多个程序员来编写,看字面意思就知道了,一个方法分成几个部分,在编译的时候再组合在一起,如果可以有返回值的话,那不同的程序员编写的不同方法,最后的返回值可能是不一样的,那这个方法到底要返回哪个值。这就是不能有返回值的原因。

其实分部类和分部方法不难理解,有些类或者方法太过庞大,需要由多个程序员分工完成,这时候就需要用分部类或分部方法。即每个人负责其中一部分。
回复 使用道具 举报
谢谢大家的好意,可能是我没有说清楚,“部分方法”不是大家理解的“一部分”的意思,是
部分类中定义的部分方法。部分方法在部分类中定义,但没有方法体,在另一部分类中执行。在这两个部分类中,都要使用partial关键字。
例如:
public partial class ClassTemp
{
    partial void PartialFunction();
}

public partial class ClassTemp
{
    partial void PartialFunction()
    {
        //方法实现
    }
}

像这样的部分类中定义的部分方法,为什么不能有返回值,并不是像大家说的构造函数、析构函数之类的。
还是感谢大家了。
回复 使用道具 举报
看程序的需要,如果程序不需要有返回值,那就不用给返回值了,也就是void类型的;
回复 使用道具 举报
杜磊 中级黑马 2013-4-10 21:14:35
7#
所谓的不能,大概是.net Freamwork中的API本身就把方法定义成void,就是没有返回值的意思。
自己写方法的话,就没有“部分方法不能有返回值”这一说法了。只是有没有必要的问题。
假如说我的一个方法public XXX SeyHello(){Console.WriteLine("大家好,我是新来的");}只是为了在控制台输出一句话,那就没有必要有返回值了。
是没有必要,而不是不能。
回复 使用道具 举报
有些方法只是调用而已,并无返回值,一般定为void    有没有返回值视题目而定,正如上面说的你想返回一个int类,
那你调用的时候也要定义为int类型的进行接收
回复 使用道具 举报
根据自己的需要决定,没有什么硬性的要求。
从网上找了一个形象的说法如下:
举个例子,方法1:bool 我叫xxx去吃饭(饭的坐标){}

执行结果,xxx去吃了,吃完返回true,由于种种原因没吃,那返回false。

如果我根本不关心他吃饭成功了没有,那就有了方法2:void 我叫xxx去吃饭(饭的坐标){}

结果:吃完没吃完我不知道,但是确实叫他去吃了。
回复 使用道具 举报
void 空类型是不能有返回类型的, 你要是想要返回一个bool类型的就把方法定义成bool型的,想返回一个int类型的就把方法定义成int类型的等等。
回复 使用道具 举报
本帖最后由 HM邱刚权 于 2013-4-10 11:35 编辑

构造函数没有返回类型,其实构造函数返回的就是他所在的类本身。 构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构 造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
我个人认为规定是没有返回的,但实际是隐式返回的类的对象
举个例子,方法1:bool 我叫xxx去吃饭(饭的坐标){}
执行结果,xxx去吃了,吃完返回true,
由于种种原因没吃,那返回false。如果我根本不关心他吃饭成功了没有,
那就有了方法2:void 我叫xxx去吃饭(饭的坐标){}结果:吃完没吃完我不知道,但是确实叫他去吃了。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
部分方法不能有返回值, 这句话本身就很笼统唉
有没有返回值,是看你的需要
但,C#里也的确有规定有的不能有返回值,比如:
构造方法:主要是用来赋初始值的
析构方法:撤销对象的时候会自动调用这个

不好意思,知识有限, 我就知道这两个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马