【问题标题】:getting value in for statement as return value在 for 语句中获取值作为返回值
【发布时间】:2012-06-26 08:22:32
【问题描述】:

Id 需要在 Iteration 方法中将 i 作为 Iteration() 的返回值....目前它错误地说它没有返回值。我假设它在 for 语句中。

using System;

class Program
{
int i = 1;

static string globalValue = "I was declared outside any method";

static void Main()
{
    for (int b = 0; b < 101; b++)
    {
        Console.Write(Iteration());
    }
}
static string FizzBuzz()
{
    string f = "word1";

    return f;
}
static string Buzz()
{
    string b = "word2";

    return b;
}
static int Iteration()
{
    for (int i = 0; i < 101; i++)
    {
        return i;
    }



}

}

【问题讨论】:

  • 你到底想做什么?你想让它百次打印出 0 到 100 的数字吗?
  • 即使你让它工作,它也只会打印一个 100 '0'......我猜这不是你的目标。

标签: c# loops for-loop iteration


【解决方案1】:

C# 编译器仅具有有限的浏览代码的能力,以确定您的函数是否总是返回一个值。虽然您编写的代码总是返回,但编译器并没有“足够聪明”来解决这个问题。

只要在循环后的函数末尾放一个return -1;就可以满足编译器的要求了。

当然,您现在拥有的代码没有多大意义,因为Iteration() 将始终返回0。它不会遍历整个循环,因为函数只能返回一个值。 (迭代器块是一个语法异常,但不是实际异常)。

【讨论】:

    【解决方案2】:

    如果不编译,如果你说迭代函数抱怨所有代码路径不返回整数,那是因为返回包含在for中,编译器不知道循环是否真的会跑与否。也许:

    static int Iteration()
    {
       int retValue = 0;     // some default value
       for (int i = 0; i < 101; i++)
       {
           retValue = i;
           break;         // break when you get the iteration you want           
       }
    
       return retValue;
    }
    

    虽然代码没有真正的意义,但它应该对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多