Return 通过方法从数组中获取多个对象
Return Multiple Objects From Array Through a Method
下面的方法 return 只是数组中的第一个对象。
public string PRINT_CRATE()
{
foreach (var soda in sodaCans)
{
if (soda != null)
{
return string.Join(Environment.NewLine, soda);
}
else
{
return ("Empty spot");
}
}
return null;
}
它工作正常,除了我希望它 "group up" 所有对象和 return 它们。就像现在一样,只有第一个对象得到 returned。
最好的方法是什么?
如果你想 return 一个包含所有数据的字符串,你可能正在寻找类似的东西:
public string PrintCrate()
{
string rv = "";
foreach (var soda in sodaCans)
{
if (soda != null)
{
rv += "\n" + soda;
}
}
return rv;
}
编辑:根据评论,我的解决方案不是最优的。
我想指出, 可能是最好的解决方案。它很短,正确处理换行符,并输出 OP 可能想要的 "Empty Spot"
条目。
出于教育价值,我将包含一个带有 StringBuilder
和手动枚举的版本,该版本与 Erik 的答案相当,因为它接近 string.Join()
:[=16= 的实现]
public string PrintCrate()
{
using (var enumerator = sodaCans.GetEnumerator())
{
if (!enumerator.MoveNext())
return null
var stringBuilder = new StringBuilder();
stringBuilder.Append(enumerator.Current ?? "EmptySpot");
while (enumerator.MoveNext())
{
stringBuilder.Append(Environment.NewLine);
stringBuilder.Append(enumerator.Current ?? "EmptySpot");
}
return StringBuilder.ToString();
}
}
执行您要求的最简单的事情可能是 Linq 查询:
return string.Join(Environment.NewLine, sodaCans.Select(x => x ?? "EmptySpot"));
.Select
方法允许您转换每个元素,这里我使用空合并运算符 ??
将空值替换为 "EmptySpot"
。
下面的方法 return 只是数组中的第一个对象。
public string PRINT_CRATE()
{
foreach (var soda in sodaCans)
{
if (soda != null)
{
return string.Join(Environment.NewLine, soda);
}
else
{
return ("Empty spot");
}
}
return null;
}
它工作正常,除了我希望它 "group up" 所有对象和 return 它们。就像现在一样,只有第一个对象得到 returned。
最好的方法是什么?
如果你想 return 一个包含所有数据的字符串,你可能正在寻找类似的东西:
public string PrintCrate()
{
string rv = "";
foreach (var soda in sodaCans)
{
if (soda != null)
{
rv += "\n" + soda;
}
}
return rv;
}
编辑:根据评论,我的解决方案不是最优的。
我想指出,"Empty Spot"
条目。
出于教育价值,我将包含一个带有 StringBuilder
和手动枚举的版本,该版本与 Erik 的答案相当,因为它接近 string.Join()
:[=16= 的实现]
public string PrintCrate()
{
using (var enumerator = sodaCans.GetEnumerator())
{
if (!enumerator.MoveNext())
return null
var stringBuilder = new StringBuilder();
stringBuilder.Append(enumerator.Current ?? "EmptySpot");
while (enumerator.MoveNext())
{
stringBuilder.Append(Environment.NewLine);
stringBuilder.Append(enumerator.Current ?? "EmptySpot");
}
return StringBuilder.ToString();
}
}
执行您要求的最简单的事情可能是 Linq 查询:
return string.Join(Environment.NewLine, sodaCans.Select(x => x ?? "EmptySpot"));
.Select
方法允许您转换每个元素,这里我使用空合并运算符 ??
将空值替换为 "EmptySpot"
。