c#中如何从int数组方法返回字符串

本文关键字:数组 方法 返回 字符串 int | 更新日期: 2023-09-27 18:16:26

我的方法应该检查我传递的int数组是否有任何负值,如果有,它应该将它们保存到一个字符串中,并返回每个值以及它们所在的索引。现在这个方法只返回数组的第一个负值。我如何使每个负值和它的索引被添加到一个字符串?

public static string FindNegative(int[] array)
{
    string yes = null;
    foreach (var n in array)
      {
        if (n < 0)
        {
            yes += (Array.IndexOf(array, n) + ":" + n + ",");  
        }
        return yes;
    }
    return null; 
}

c#中如何从int数组方法返回字符串

public static string FindNegative(int[] array)
{
    string yes = null;
    foreach (var n in array)
      {
        if (n < 0)
        {
            yes += (Array.IndexOf(array, n) + ":" + n + ",");  
        }
    }
    return yes;
}

虽然,这也可以工作:

public static string FindNegative(int[] array)
{
    return String.Join(",",array.Where(x=>x<0)
      .Select((e,i)=>String.Format("{0}:{1}",i,e)));
}

但是,我建议这样做:

public class FindNegativeResult {
  public int Index {get;set;}
  public int Number {get;set;}
}
public static IEnumerable<FindNegativeResult> FindNegative(int[] array)
{
    return array.Where(x=>x<0)
      .Select((e,i)=>new FindNegativeResult {Index=i, Number=e});
}

这是因为你从循环内部返回,更改代码如下&最后返回yes

public static string FindNegative(int[] array)
{
    string yes = null;
    foreach (var n in array)
      {
        if (n < 0)
        {
            yes += (Array.IndexOf(array, n) + ":" + n + ",");  
        }
        //return yes;
    }
    return yes; 
}

按如下方式修改代码:

public static string FindNegative(int[] array)
{
    string yes = null;
    foreach (var n in array)
      {
        if (n < 0)
        {
            yes += (Array.IndexOf(array, n) + ":" + n + ",");  
        }
    }
    return yes; 
}
public static string FindNegative(int[] array)
{
    string yes = String.Empty;
    foreach (var n in array)
        if (n < 0)
            yes += (Array.IndexOf(array, n) + ":" + n + ",");  
    return yes;
}