【问题标题】:How to use return from a function properly in c# [closed]如何在c#中正确使用函数的返回[关闭]
【发布时间】:2021-03-14 03:01:00
【问题描述】:

我想从函数中返回一个变量。我已经按照以下方式完成了。

我的需要是我想拆分一个句子并检查一个特定的关键字是否存在。如果是它应该返回买否则卖

private string FindDirection(string Order)
    {
        string direction;
        string[] splitText = Order.Split(' ');
        foreach (string s in splitText)
        {
            if (Convert.Contains(s))
            {
                direction = "B";
            }
            else
            {
                direction = "S"; 
            }
            return direction;
        }

        return null;
    }

我想从函数返回方向。如果我没有输入返回 null,它会显示错误。如果我输入返回方向而不是返回 null,它会显示“

使用未赋值的变量"

我是新来的,如果您对我的代码和风格有任何建议,请告诉我。

【问题讨论】:

  • 考虑以下情况:您输入了一个空字符串,并且您的循环甚至没有被执行一次。 那么direction的值是多少
  • 这个函数可能不会做你想做的事。问题是,你从来没有告诉我们你想要它做什么。请用简单的英语告诉我们您希望这个函数做什么,并给我们一些示例值(输入、预期输出)。
  • @john 编译器无法知道运行时会发生什么。您通过说它是 string 来声明“null”或 string.Empty 可能的输入值,因此编译器必须弄清楚如果它是其中之一会发生什么。
  • 再次:我只能看到您的代码现在做了什么,我确定这不是您想要的。由于您还没有告诉我们您想要您的代码做什么,最好是示例输入和输出,我们真的无能为力。
  • @HansKesting 谢谢。我添加了以下行 if (string.IsNullOrEmpty(singleOrder)) { // code here }

标签: c# .net return return-value


【解决方案1】:

在您的代码示例中,您总是会提前从循环中返回,只循环 splitText 中的第一个字符串。

将 return 放在函数的末尾,允许循环遍历其所有元素。

private string FindDirection(string singleOrder)
{
    string direction = "SELL";
    string[] splitText = singleOrder.Split(' ');

    foreach (string s in splitText)
    {
        if (strConvert.Contains(s))
        {
            direction = "BUY";
            break;
        }
    }

    return direction;
}

“BUY”和“SELL”最好使用枚举而不是字符串

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/enum

【讨论】:

  • 谢谢。似乎它可以工作
猜你喜欢
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2011-10-29
  • 2021-09-11
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多