访问范围之外的对象

时间:2013-03-13 05:56:31

标签: c# loops for-loop foreach scope

我有一个看起来像这样的foreach循环

foreach (Student newSortedStudent in studentWithData)
{
    newSortedStudent.Fees = newSortedStudent.Fees.OrderBy......ToArray();
}

但现在我需要访问这个newSortedStudent对象并使用它进行更多操作。

如果我这样做

foreach (Student newSortedStudent in studentWithData)
{
    newSortedStudent.Fees = newSortedStudent.Fee.OrderBy......ToArray();
}

foreach(Student studentData in **newSortedStudent**)
{
    ....
}

我收到错误newSortedStudent在当前上下文中不存在。

那么如何在foreach循环之外访问newSortedStudent呢?

由于

6 个答案:

答案 0 :(得分:1)

您可以使用嵌套的loop并在内部循环中使用外部loop对象,如下所示。

foreach (Student newSortedStudent in studentWithData)
{
    foreach(Student studentData in newSortedStudent.Fee.OrderBy......ToArray())
    {
        ....
    }    
}

答案 1 :(得分:0)

您需要访问哪个newSortedStudent?你只是通过他们的集合循环。由于某种原因,它不属于范围。我建议:

1)将其设置为您尝试使用的范围中存在的变量(即在foreach循环之前定义变量,然后确定使用哪个newSortedStudent设置它)。或者您可以将其索引存储在变量中,并使用它在studentWithData

中找到它

2)在循环中完成循环中你需要做的事情。

如果不确切知道自己要做什么,很难知道是否需要这些或其他解决方案。

答案 2 :(得分:0)

你需要在循环之前定义一个可变的。将newSortedStudent对象存储在内部循环中。然后在循环之后访问该变量

这就像

Student s = new Student();

foreach (Student newSortedStudent in studentWithData)
{
    newSortedStudent = newSortedStudent.Fee.OrderBy......ToArray();
    s = newSortedStudent;
}

// Use s for your manipulations

答案 3 :(得分:0)

foreach (Student newSortedStudent in studentWithData)
{
    foreach(Student studentData in newSortedStudent)
   {
       ....
   }
}

答案 4 :(得分:0)

试试这个,

    Student sortedStudent = null;

    foreach (Student newSortedStudent in studentWithData)
    {
        sortedStudent = newSortedStudent.Fee.OrderBy......ToArray();
    }

 if(sortedStudent != null){
    foreach(Student studentData in sortedStudent)
    {
        ....
    }
  }

答案 5 :(得分:0)

有很多方法可以将变量/对象放在范围之外。 1.一种方法是使用带有一些标志的嵌套循环。 2.当newStoreStudent填充新值时,首先公开创建Student类型对象,然后将newStoreStudent分配给此对象。