访问作用域外的对象

本文关键字:对象 作用域 访问 | 更新日期: 2023-09-27 18:03:50

我有一个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呢?

谢谢

访问作用域外的对象

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

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

您需要访问哪个newSortedStudent ?你只是循环遍历了其中的一个集合。它不在讨论范围之内是有原因的。我建议:

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

中找到它

2)当你在上下文中拥有它时,在循环中对它做你需要做的事情。

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

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

也就是

Student s = new Student();
foreach (Student newSortedStudent in studentWithData)
{
    newSortedStudent = newSortedStudent.Fee.OrderBy......ToArray();
    s = newSortedStudent;
}
// Use s for your manipulations

试试这个,

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

在作用域外获取变量/对象的方法有很多。1.一种方法是使用带有某些标志的嵌套循环。2.其次,公开创建学生类型对象,然后将newStoreStudent分配给该对象,当newStoreStudent用新值填充时。