C# 关于C中列表范围的问题#
我有一个私有函数Load,它创建一个列表,创建几个对象,然后将datagrid绑定到列表。代码类似于:C# 关于C中列表范围的问题#,c#,list,scope,C#,List,Scope,我有一个私有函数Load,它创建一个列表,创建几个对象,然后将datagrid绑定到列表。代码类似于: List<Car> cars = new List<Car>(); cars.Add(new Car("Ford", "Mustang", 1967)); cars.Add(new Car("Shelby AC", "Cobra", 1965)); cars.Add(new Car("Chevrolet", "Corvette Sting Ray", 1965)); _
List<Car> cars = new List<Car>();
cars.Add(new Car("Ford", "Mustang", 1967));
cars.Add(new Car("Shelby AC", "Cobra", 1965));
cars.Add(new Car("Chevrolet", "Corvette Sting Ray", 1965));
_dgCars.DataSource = cars;
foreach (Car car in cars) // Loop through List with foreach
{
// Need to access individual object properties here
}
我得到一个错误,即汽车在当前环境中不存在。我是否可以进行更改,使列表在全球范围内可用?也许我可以在其他地方定义它?好吧,这与列表本身无关。它是一般变量范围。您没有说明在哪里声明了
cars
变量,或者您试图在哪里使用它-但我猜您已经将其设置为局部变量,并且两段代码采用不同的方法
您可能希望将其作为实例变量。例如:
public class Test
{
private List<Car> cars;
public void PopulateDataSource()
{
cars = new List<Car>
{
new Car("Ford", "Mustang", 1967),
new Car("Shelby AC", "Cobra", 1965),
new Car("Chevrolet", "Corvette Sting Ray", 1965)
};
_dgCars.DataSource = cars;
}
public void IterateThroughCars()
{
foreach (Car car in cars) // Loop through List with foreach
{
...
}
}
}
公共类测试
{
私家车名单;
public void PopulateDataSource()
{
汽车=新名单
{
新车(“福特”、“野马”,1967年),
新车(“谢尔比AC”,“眼镜蛇”,1965年),
新车(“雪佛兰”,“克尔维特斯汀雷”,1965年)
};
_dgCars.DataSource=cars;
}
公共车辆
{
foreach(Car-Car-in-cars)//使用foreach循环列表
{
...
}
}
}
好吧,这与列表本身无关。它是一般变量范围。您没有说明在哪里声明了cars
变量,或者您试图在哪里使用它-但我猜您已经将其设置为局部变量,并且两段代码采用不同的方法
您可能希望将其作为实例变量。例如:
public class Test
{
private List<Car> cars;
public void PopulateDataSource()
{
cars = new List<Car>
{
new Car("Ford", "Mustang", 1967),
new Car("Shelby AC", "Cobra", 1965),
new Car("Chevrolet", "Corvette Sting Ray", 1965)
};
_dgCars.DataSource = cars;
}
public void IterateThroughCars()
{
foreach (Car car in cars) // Loop through List with foreach
{
...
}
}
}
公共类测试
{
私家车名单;
public void PopulateDataSource()
{
汽车=新名单
{
新车(“福特”、“野马”,1967年),
新车(“谢尔比AC”,“眼镜蛇”,1965年),
新车(“雪佛兰”,“克尔维特斯汀雷”,1965年)
};
_dgCars.DataSource=cars;
}
公共车辆
{
foreach(Car-Car-in-cars)//使用foreach循环列表
{
...
}
}
}
是。在类级别定义列表车辆,即在私有函数之外(假定两个函数在同一类中)。是。在类级别定义列表车,即在私有函数之外(假定两个函数在同一个类中)。oftype表达式如何
public void IterateThroughCars()
{
foreach (var car in _dgCars.DataSource.OfType<Car>()) // Loop through List with foreach
{
...
}
}
public void iteratethrowcars()
{
foreach(在dgCars.DataSource.OfType()中的var car)//使用foreach循环列表
{
...
}
}
oftype表达式如何
public void IterateThroughCars()
{
foreach (var car in _dgCars.DataSource.OfType<Car>()) // Loop through List with foreach
{
...
}
}
public void iteratethrowcars()
{
foreach(在dgCars.DataSource.OfType()中的var car)//使用foreach循环列表
{
...
}
}
foreach循环不适用于列表,因为列表不包含.Length属性。
如果您想在列表中迭代,请使用for循环或while循环,如下所示
for(int i=0;i<cars.Count;i++)
{
Car objCar=cars[i];
}
for(int i=0;iforeach循环不能与list一起工作,因为list不包含.Length属性。
如果您想在列表中迭代,请使用for循环或while循环,如下所示
for(int i=0;i<cars.Count;i++)
{
Car objCar=cars[i];
}
for(int i=0;ior)您可以将列表传递给另一个方法,该方法也可以访问列表内容。或者您可以将列表传递给另一个方法,该方法也可以访问列表内容。