【问题标题】:for loop converter [closed]for循环转换器[关闭]
【发布时间】:2013-02-19 13:29:27
【问题描述】:

我知道那里有诸如 vb 到 c# 转换器应用程序之类的东西,但我正在寻找的是有点不同。我需要一个转换器来帮助我将这个“for”循环转换为一个“while”循环。这是我为“整数工厂”设计的代码(您可以在底部看到“for”循环 - 这是需要转换的内容)。我还有其他一些循环,这就是为什么我需要一个应用程序(最好是所见即所得)。谢谢!

int IntegerBuilderFactory(string stringtobeconvertedbythefactory)
{
       string strtmp = stringtobeconvertedbythefactory;

       int customvariabletocontrolthethrottling;

       if (strtmp.Length > 0)
       {
              customvariabletocontrolthethrottling = 1;
       }
       else
       {
              customvariabletocontrolthethrottling = 0;
       }

       for (int integersforconversiontostrings = 0; integersforconversiontostrings < customvariabletocontrolthethrottling; integersforconversiontostrings++)
       {
              return int.Parse(strtmp);
       }

       try
       {             
              return 0;
       }
       catch (Exception ex)
       {
              // Add logging later, once the "try" is working correctly

              return 0;
       }
}

【问题讨论】:

  • 您需要一个将“少数 for 循环”重构为 while 循环的应用程序?为什么不能手动操作?
  • 如果它返回它转换的第一个元素,为什么它甚至是一个 for 循环?您是否尝试以某种方式简化代码,或者您拥有的是实际代码?
  • @R0MANARMY,这是我过去几天一直在研究的真实代码。我正在努力简化转换过程。我正在使用循环来提高安全性和内存效率。我愿意接受您的任何建议!
  • 有一个专门针对code reviews 的网站,您可能会更幸运地在那里发帖并寻求建议。不过,我有点好奇您认为使用循环会如何提高安全性。
  • 真的花了你几天的时间来产生这个可怕的混乱int.TryParse 实现,同时仍将所有实际工作委托给框架?没有冒犯的意思,但如果这是真的,你可能应该重新考虑你的工作选择......为了更好地(减少 IL 大小,减少错误,可能减少内存大小)实现上面那个怪物,你应该使用我的答案中的版本.

标签: c# for-loop while-loop converter


【解决方案1】:

每个 for 循环 (for(initializer;condition;iterator)body;) 本质上都是

{
    initializer;
    while(condition)
    {
        body;
        iterator;
    }
}

现在您可以利用这些知识为您选择的重构工具创建代码转换。

顺便说一句,这段代码看起来很糟糕......

int IntegerBuilderFactory(string stringToParse)
{
    int result;
    if(!int.TryParse(stringToParse, out result))
    {
        // insert logging here
        return 0;
    }

    return result;
}

完成。

【讨论】:

  • 好吧,我不一定要对每个实例都依赖这个逻辑。我需要一款考虑所有因素的应用。
  • 有哪些注意事项需要考虑?除了不可编译的代码,我想不出任何...
  • 需要注意的地方是continue 语句。在 for 循环中,迭代语句将自动运行。转换后的 while 循环不是这种情况。
  • @jerry:确实,没有想到这一点。但是这种转换通常没有多大意义(除了演示目的),所以这并不重要(因为当你需要一个 for 循环时,一个 for 循环是要走的路)
  • @Nuffin:我同意,我只是在教新程序员有关 for 循环和 continuebreak 语句时遇到它
【解决方案2】:
int integersforconversiontostrings = 0;
while (integersforconversiontostrings < customvariabletocontrolthethrottling)
{
    return int.Parse(strtmp);
    integersforconversiontostrings++
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2021-12-16
    • 2018-05-10
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    相关资源
    最近更新 更多