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;
}
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;
}