foreach怎样逆向遍历?

wdroc 2008-05-06 03:24:03
foreach (string sss in stringInfo)
{
string sss = s;
...
}

一般来说foreach是正向遍历,但我怎么从数组的最后一个开始逆向遍历呢?
...全文
1136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ProjectDD 2008-05-06
  • 打赏
  • 举报
回复
修改一下,
public IEnumerable<string> GetDownString(params string[] data)
{
string[] vs = new string[data.Length];
int i = 0;
foreach (var item in data)
{
vs[i] = item; i++;
}
for (int j = data.Length - 1; j > 0; j--)
{
yield return vs[j];
}
}
ProjectDD 2008-05-06
  • 打赏
  • 举报
回复
自己写迭代器,象这样,

public IEnumerable<string> GetDownString(params string[] data)
{
string[] vs=new string[data.Lenght];
int i=0;
foreach (var item in data)
{
vs[i]=item; i++;
}
for(int j=i;j>0;j--)
{
yield return vs[j];
}
}
wdyzgym 2008-05-06
  • 打赏
  • 举报
回复
foreach 就相当于for(int i = 0;i<s.length;i++)

如果你非要逆序,就用for语句。或者像1楼所说的:
先Reverse ,在foreach
nmd002 2008-05-06
  • 打赏
  • 举报
回复
这是MSDN里的解释:
foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。

*注意:个人认为foreach从来不存在正向或逆向的检索方式.

另外你的问题好奇怪,想逆向特循环为什么不使用for循环呢?使用for循环,关键看你需要循环的集合或数组是否存在一个序数的键值.
有些集合是带有字符键值和排序键值两种方式的,即可以用XX["键值"]的方式来读取,也可以用XX[i]的方法来读取,甚至有的对象还具有专门的按序列取值的方法可供使用.比如:XX.index(i)等专门提供的方法.需要你根据情况来判断的.

如果实在没有可按序取值的方法或属性,你可以自己将对象继承一下,写个带键值的类.这样取得对象之后,转换个类型就可以按序逆向取得值了,方法很多,不用死心眼.
楼外楼 2008-05-06
  • 打赏
  • 举报
回复
只能用For或者While了
zhnzzy 2008-05-06
  • 打赏
  • 举报
回复
不可以直接倒向
Kevin_LiuFeng 2008-05-06
  • 打赏
  • 举报
回复
那就不行用foreach了,只能用for循环了.
cww2010 2008-05-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hdt 的回复:]
用for( int i= stringinfo.count-1 ; i>=0 ;i-- )
或者把数组倒置一下再foreach
Array.Reverse (stringinfo);
[/Quote]
真相重于对错 2008-05-06
  • 打赏
  • 举报
回复
用for( int i= stringinfo.count-1 ; i>=0 ;i-- )
或者把数组倒置一下再foreach
Array.Reverse (stringinfo);

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧