黑马程序员技术交流社区

标题: 这样写 为什么报错啊??? [打印本页]

作者: 祝冰鑫    时间: 2012-2-28 22:04
标题: 这样写 为什么报错啊???
        int stance;

        public int Stance
        {
            get
            {
                if (stance > 0)
                    return stance;
            }
        }

声明一个变量   只读属性    这样写为什么报错啊

作者: 孙琦    时间: 2012-2-28 22:10
注意,return 的作用域。。。
作者: 祝冰鑫    时间: 2012-2-28 22:12
原本的get里面是这样写的
get
{
       return stance;
}

加了一个条件不行吗???可以具体说说嘛???
作者: 孙琦    时间: 2012-2-28 22:19
祝冰鑫 发表于 2012-2-28 22:12
原本的get里面是这样写的
get
{

如果要return的话,属性里的作用域中的每个分支都要有返回值,就像你写的if(条件)return 还有个else也得return ,当然如果分支中有没有return的,放在最后一个return也行。。

private int num;

        public int Num
        {
            get
            {
                if (num > 1)
                    return num;
                return num;
            }
        }
作者: 许全通    时间: 2012-2-28 22:20
既然是只读属性,那么久不可以修改啊!我好像只见过在set中设置if()语句条件的,但是get中就。。。。。。等你解决了告诉我一声啊!!!
作者: 祝冰鑫    时间: 2012-2-28 22:45
孙琦 发表于 2012-2-28 22:19
如果要return的话,属性里的作用域中的每个分支都要有返回值,就像你写的if(条件)return 还有个else也得r ...

那在那里设一个if不就没有意义了吗???
作者: 祝冰鑫    时间: 2012-2-28 22:46
许全通 发表于 2012-2-28 22:20
既然是只读属性,那么久不可以修改啊!我好像只见过在set中设置if()语句条件的,但是get中就。。。。。。 ...

我后来是没有在get里面加条件,是在构造函数里加的,所以来这问问
作者: 邱国    时间: 2012-2-29 00:33
我猜vs里面的错误原因应该是:并不是每一个路径都有返回值

这样意思就很明显了,
作者: 成刚    时间: 2012-2-29 00:40
我看你这个代码,你把stance变量定义到方法的外面,方法里面根本都读取不到的,首先会报一个“当前上下文不存在stance”{:soso_e112:}
作者: 付茂炯    时间: 2012-2-29 01:02
你写了if语句,满足条件有返回值,不满足的情况下的返回值你没写。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2