黑马程序员技术交流社区

标题: 创建索引器出错 [打印本页]

作者: y494890511    时间: 2013-11-9 08:36
标题: 创建索引器出错
本帖最后由 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("错误的序号");
                }
            }
        }
作者: hourglass    时间: 2013-11-9 08:41
如果index既不等于1也不等于2,那么就不会返回任何值了。
作者: dashanren    时间: 2013-11-9 09:34
      要所有可能的情况都有return 。否则检测到不符合的情况就无法 return了。你只是列出了1和2二种情况,还有很多情况的值没有返回值。
作者: 凤凰涅槃    时间: 2013-11-9 12:14
你的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.             }
复制代码

作者: 凤凰涅槃    时间: 2013-11-9 12:23
刚才测试了一把,发现你的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.             }
复制代码





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