C#函数在if语句中获得的返回值

时间:2016-07-19 14:48:30

标签: c#

我有一个返回字符串值的函数。如下所示,它填充一个列表,然后在该列表中找到最长的值并将其返回。

public static string myFunction(string str)
{
     for (blah str)
     {                       
         myList.Add(someString);
     }

     string longest = myList[0];

     foreach (string s in myList)
     {
         if (s.Length > longest.Length)
         {
             longest = s;
         }
     }

     return longest;
}

我注意到如果我的列表没有填满,我收到一条错误消息,所以决定添加一个条件来检查列表是否为空。但添加if语句来检查这会导致返回值超出范围。

如何在不声明其他变量的情况下解决此问题?

public static string myFunction(string str)
{
     for (blah str)
     {                       
         myList.Add(someString);
     }

     if (myList.Count != 0)
     {
         string longest = myList[0];

         foreach (string s in myList)
         {
             if (s.Length > longest.Length)
             {
                 longest = s;
             }
         }
     }

     return longest;
}

我也想知道如果找到所需的字符串,如何返回s字符串,如果找不到,则返回-1?我知道函数的返回类型只能是一件事,但是如果我的函数需要返回-1,如果找不到所需的字符串,我该怎么做?

编辑:已解决,首先在我声明列表时添加以下内容(而不是在if语句中使用myList[0]声明这是我的大错误) :

List<string> myList = new List<string>() {""};

其次,对于不同的返回类型(这只是编程要求),我声明了一个对象返回类型,以便为返回值实现string-1

另一个编辑:这个问题提供的答案也是正确的(我已经标记过了)虽然它使用的是另一个目前不是我关注的范例。

1 个答案:

答案 0 :(得分:1)

您可以使用此在线人员:

string longestString = strsList.FirstOrDefault(st => st.Length == strsList.Select(s => s.Length).Max()) ?? string.Empty;

如果列表为空,它将返回最长的字符串或空字符串。

如果您要查找最长的时间,请考虑使用:

return strsList.Select(s => s.Length).Concat(new[] {-1}).Max();

如果字符串为空或长度最长,则返回-1