none
C# 的return0;在什么情况下要被使用,表示什么意思呢 RRS feed

  • 问题

  • class A
     {
      static void SomeFuntion(out int i)
      {
       i = 10;
      }

      public static int Main()
      {
       int i;
       SomeFuntion(out i);
       Console.WriteLine(i);
       return 0;

    }
     }

    这段代码中如果把return 0;换成return i;照样可以输出想要的结果且运行无错误,那为什么非要用return 0;呢,有什么严格的要求吗,望高人指点,多谢了。

    2010年4月7日 18:08

答案

  • 你好!

    返回什么0 或 i 对程序的执行都无影响,但通常情况下返回 0 表示执行成功。这种方式在其它的地方也经常用到,返回值为 0 即成功,大于 0 为错误代码。


    知识改变命运,奋斗成就人生!
    2010年4月8日 1:28
    版主
  • 用return 0和return i都一样,没要求吧,只要返回的是整数类型就可以了


    努力+方法=成功
    2010年4月8日 1:21

全部回复

  • 用return 0和return i都一样,没要求吧,只要返回的是整数类型就可以了


    努力+方法=成功
    2010年4月8日 1:21
  • 你好!

    返回什么0 或 i 对程序的执行都无影响,但通常情况下返回 0 表示执行成功。这种方式在其它的地方也经常用到,返回值为 0 即成功,大于 0 为错误代码。


    知识改变命运,奋斗成就人生!
    2010年4月8日 1:28
    版主
  • 也就是说返回0表示成功同时也隐含着return i;的那层意思对吧,所以说才保证程序没有错误,那到底在什么情况下需要用return 0;呢,我习惯用return i;是不是说不用return 0;的程序照样算是好的程序呢
    2010年4月8日 1:41
  • 按你现在的写法,返回什么都一样,只要是整数就可以

    但是如果你写了一个方法,来判断程序执行是否有误,例如

    public int Test()

    {

       try

             {return 0;}

       catch

            { return 1;}//表示异常,

    }


    努力+方法=成功
    2010年4月8日 1:50
  • 按你现在的写法,返回什么都一样,只要是整数就可以

    但是如果你写了一个方法,来判断程序执行是否有误,例如

    public int Test()

    {

       try

             {return 0;}

       catch

            { return 1;}//表示异常,

    }


    努力+方法=成功
    2010年4月8日 1:50
  •    class IndexerClass
        {
            private int[] arr = new int[100];
            public int this[int index]   // Indexer declaration
            {
                get
                {
                    // Check the index limits.
                    if (index < 0 || index >= 100)
                    {
                        return 0;
                    }
                    else
                    {
                        return arr[index];
                    }
                }
                set
                {
                    if (!(index < 0 || index >= 100))
                    {
                        arr[index] = value;
                    }
                }
            }
        }

        class MainClass
        {
            static void Main()
            {
                IndexerClass test = new IndexerClass();
                // Call the indexer to initialize the elements #3 and #5.
                test[3] = -2;
                test[5] = 120;
                for (int i = 0; i <= 10; i++)
                {
                    System.Console.WriteLine("Element #{0} = {1}", i, test[i]);
                    Console.ReadKey();
                }
            }
        }
    }

    为什么这段程序里的return 0;它其中有两个返回的确是实际的数test[3]=-2;test[5]=120,这种情况下这两个数都越界了为什么还要让它们返回0表示成功呢,为什么不抛出异常,请问是从什么角度来考虑这个问题的呢,是因为当计算索引器的访问时(例如,在 Console.Write 语句中),将调用 get 访问器。因此,如果 get 访问器不存在,将发生编译时错误这个原因吗,那岂不是如果有越界的数都要被输出来吗,对程序不是很不利吗,请指教谢谢

    2010年4月8日 11:04
  • 程序是你自己写的

    如果不是你写的,那么程序设计初衷估计就是在数组越界的时候返回 数值 0.

    这个限制是因为你定义的数组最多只能有100个元素。为了避免出现异常,而加入了这个限制。这个是程序的容错性。

     


    family as water
    2010年4月8日 13:17
  • 有关 Main 函数返回值的问题,请参考我的文章:C# tutorials (6): The Main method
    Mark Zhou
    2010年4月9日 7:19