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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© y494890511 高级黑马   /  2013-11-9 08:36  /  1803 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 y494890511 于 2013-11-12 08:47 编辑

错误 1“索引器.Person.this[int].get”: 并非所有的代码路径都返回值 D:\C#学习\面向对象\索引器\Program.cs25  13  索引器

    public string this[int index]
        {
            get
            {
                if (index==1)
                {
                    return FirstName;
                }
                else if(index==2)
                {
                    return SecondName;
                }
            }
            set
            {
                if (index == 1)
                {
                    FirstName = value;
                }
                else if(index==2)
                {
                    SecondName = value;
                }
                else
                {
                    throw new Exception("错误的序号");
                }
            }
        }

4 个回复

倒序浏览
如果index既不等于1也不等于2,那么就不会返回任何值了。

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
      要所有可能的情况都有return 。否则检测到不符合的情况就无法 return了。你只是列出了1和2二种情况,还有很多情况的值没有返回值。

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

回复 使用道具 举报
你的get代码做如下更改即可   ,我这里只是提供一个思路,仅供参考。。。。。。
  1. get
  2.             {
  3.                 if (index == 1)
  4.                 {
  5.                     return FirstName;
  6.                 }
  7.                 else if (index == 2)
  8.                 {
  9.                     return SecondName;
  10.                 }
  11.                 else
  12.                 {
  13.                     return FirstName;//默认返回值--防止用户非法输入造成程序异常
  14.                 }
  15.             }
复制代码

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
刚才测试了一把,发现你的set方法else语句也可以修改下,最好不要抛异常,这样程序不友好,仅供参考
  1. set
  2.             {
  3.                 if (index == 1)
  4.                 {
  5.                     FirstName = value;
  6.                 }
  7.                 else if (index == 2)
  8.                 {
  9.                     SecondName = value;
  10.                 }
  11.                 else
  12.                 {
  13.                     Console.WriteLine("你输入索引下标错误,只能输入(1 or 2)");
  14.                 }
  15.             }
复制代码

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马