例如我们有下一堂课:
class Car
{
public string Make { get; set; }
public string Model {get;set;}
public int Year {get;set;}
public string Color {get;set;}
}
一个有几个车型的阵列:
string[] cars = { "Honda", "BMW", "Audi"};
我想为数组中的每个项创建一个对象。我已尝试使用下一个代码,但没有成功
foreach (var item in cars)
{
Car item = new Car();
}
答案 0 :(得分:2)
您不能在循环中使用相同的变量item
。此外,实例并未真正使用,因为一旦循环结束它们就会消失。
您可能希望使用LINQ (a library used to manipulation collections)并将字符串名称映射到Car
个对象的集合,
var makes = { "Honda", "BMW", "Audi" };
var cars = makes.Select(make => new Car(make));
要使其工作,您需要在类中添加一个构造函数,该构造函数带有制造商名称,
public class Car
{
public Car(string make)
{
this.Make = make;
}
public string Make { get; set; }
public string Model {get; set; }
public int Year { get; set; }
public string Color { get; set; }
}
或者,您可以使用类属性初始值设定项来设置Make属性
var makes = { "Honda", "BMW", "Audi" };
var cars = makes.Select(make => new Car { Make = make });
答案 1 :(得分:1)
如果您在Car
内创建foreach
实例,则无法访问foreach
范围之外的这些实例。首先创建一个Car List
:
var carList = new List<Car>();
然后使用for循环:
for(int i=0; i<cars.Length; i++)
{
Car item = new Car();
item.Make = cars[i];
// set other properties
carList.Add(item);
}
答案 2 :(得分:1)
您需要在汽车上设置一些信息,并在某处存储所有实例。
string[] carMakes = { "Honda", "BMW", "Audi" };
List<Car> cars = new List<Car>();
foreach (var carMake in carMakes)
{
cars.Add(new Car(){Make = carMake});
}
答案 3 :(得分:0)
这个怎么样:
class Car
{
public string Make { get; set; }
public string Model {get;set;}
public int Year {get;set;}
public string Color {get;set;}
public Car(string make)
{
Make = make;
}
}
现在为你的循环:
List<Car> cars = new List<Car>();
foreach (var item in cars)
{
Car car = new Car(item);
cars.Add(car);
}
答案 4 :(得分:0)
您可以使用一些额外的代码在一行中执行此操作
Car[] cars = new [] { new Car {Make = "Honda"},
new Car {Make = "BMW"},
new Car {Make = "Audi"}
};
或Linq投影:
string[] cars = { "Honda", "BMW", "Audi"};
Car[] cars = cars.Select(s => new Car {Make = s})
.ToArray();
答案 5 :(得分:0)
在您的类中添加一个接受'make'参数的构造函数。将其设置为实例上的Make成员。
class Car
{
public string Make { get; set; }
public string Model {get;set;}
public int Year {get;set;}
public string Color {get;set;}
public Car(string make)
{
this.Make = make;
}
}
答案 6 :(得分:0)
您可以像这样构建每辆车:
foreach (var item in cars)
{
// Note that you can't reuse 'item' here
Car newCar = new Car { Make = item };
}
您需要将每个newCar
放入列表中,或者在循环中对其执行某些操作。
您也可以使用LINQ在一行中执行此操作:
var carList = cars.Select(x => new Car { Make = x });
答案 7 :(得分:0)
这应该有效:
foreach (string name in cars)
{
Car item = new Car() { Make = name };
}