class Program
{
static void Main(string[] args)
{
Car car1 = new Car();
car1.Make = "Oldsmobile";
car1.Model = "Cultas Supreme";
Car car2 = new Car();
car2.Make = "GEO";
car2.Model = "Prism";
Dictionary<string, Car> myDicitionary = new Dictionary<string, Car>();
myDicitionary.Add(car1.Model, car1);
myDicitionary.Add(car2.Model, car2);
foreach (KeyValuePair<string, Car> CAR in myDicitionary)
{
Console.WriteLine("{0}-- {1}", CAR.Key,CAR.Value);
}
Console.ReadLine();
}
class Car
{
public string Make { get; set; }
public string Model { get; set; }
}
}
输出结果
Cultas Supreme-- Collection.Programe + Car Prism -
Collection.Program +车载
但为什么Doest没有显示Car的价值而不是Collection.Programe + Car`
答案 0 :(得分:3)
默认的.ToString()
方法返回对象的名称。如果您希望该方法返回其他内容,则需要覆盖它:
class Car
{
// same as before
public override string ToString()
{
return string.Format("{0} {1}", Make, Model);
}
}
答案 1 :(得分:2)
问题是您输出的是:
Cultas Supreme-- Collection.Programe + Car
这是因为您写道:
Console.WriteLine("{0}-- {1}", CAR.Key,CAR.Value);
由于CAR.Value
将成为Car
实例,当您将其写出来时,它会调用Car.ToString()
方法将Car
转换为字符串。由于您没有覆盖ToString()
类中的Car
,因此它只输出类的名称: Collection.Programe + Car (因为Car是Programe中的嵌套类)
要使其输出适当的值,您应该在car中写出特定值(将CAR.Value
更改为CAR.Value.Make
或类似值),或提供ToString()
的相应实现在你的汽车课上。
答案 2 :(得分:2)
您需要覆盖ToString()
方法(如其他已发布的答案中所示),或者从Car
对象中检索要打印的属性(可通过Value
获取) KeyValuePair<string,Car>
)的属性:
foreach (KeyValuePair<string, Car> CAR in myDicitionary)
{
Console.WriteLine("{0}-- {1}", CAR.Key, CAR.Value.Make);
}
答案 3 :(得分:0)
尝试
Console.WriteLine("{0}-- {1}", CAR.Key,CAR.Value.Make)
答案 4 :(得分:0)
您需要转到Car类并覆盖汽车的ToString
方法。在那种方法中,它可以写出你认为汽车的最佳字符串表示形式。
您还可以(或另外)将Console.WriteLine("{0}-- {1}", CAR.Key,CAR.Value);
更改为Console.WriteLine("{0}-- {1}", CAR.Key,CAR.Value.Make);
,以便在打印时显示汽车的品牌。
答案 5 :(得分:0)
尝试
Console.WriteLine("{0}-- {1}", CAR.Value.Model,CAR.Value.Make);
CAR指的是KeyValuePair(String model,CAR car)
CAR.KEY参考模型
CAR.Value参考CAR
CAR.VALUE.MAKE参考CAR.MAKE
CAR.VALUE.Model引用CAR.Model
如其他答案中所述,您还可以在Car类
中覆盖ToString()public override ToString()
{
return String.Format("{0}---{1}", Model, Make);
}
重写ToString()后,您可以使用car.ToString
foreach (KeyValuePair<string, Car> CAR in myDicitionary)
{
Console.WriteLine(CAR.Value);
}
答案 6 :(得分:0)
快速而肮脏的解决方案是覆盖Car
上的ToString()方法它的表现 Cultas Supreme - 这是一个字符串正确 Collection.Program + Car是Car对象的值
尝试将此添加到您的汽车对象...并且您将了解Console.Writeline在给定时和对象将对象输出到字符串方法。
public override string ToString()
{
return this.Make
}