3

我创建了一个名为的结构Point和一个List这样的点:

var myPoints = new List<Point> {
    new Point() {Col = 3, Row = 2},
    new Point() {Col = 2, Row = 4},
    new Point() {Col = 5, Row = 4},
};

当我尝试使用ForEach()方法打印它们时,我无法在那里传递一个方法组:myPoints.ForEach(Console.WriteLine);给出一个编译时错误,说明需要一个带有void WriteLine(Point)签名的方法。如果我使用 lambda 表达式或更改Point为一个类而不是结构,它就可以完美地工作。

即使总是存在从任何值类型到object通过装箱的隐式转换,为什么会发生这种情况——Console.WriteLine(object)因此应该选择该方法?

谢谢!

4

0 回答 0