C# 访问列表<;T>;价值观

C# 访问列表<;T>;价值观,c#,list,C#,List,我是一名编码初学者,试图解决简单的问题: 我有一个包含三列的列表,试图访问列表中存储的值。它没有给我答案。。。有什么想法吗?谢谢 private void btnImage1Load_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); pictureBox1.ImageLocation = openFileDialog1.FileName;

我是一名编码初学者,试图解决简单的问题:

我有一个包含三列的列表,试图访问列表中存储的值。它没有给我答案。。。有什么想法吗?谢谢

private void btnImage1Load_Click(object sender, EventArgs e)
    {
        openFileDialog1.ShowDialog();
        pictureBox1.ImageLocation = openFileDialog1.FileName;                    
    }

    public class ListThreeColumns
    {
        public int XCoord { get; set; }
        public int YCoord { get; set; }
        public Color Color { get; set; }
    }

    private List<ListThreeColumns> GetPixels()
    {
        Bitmap picture = new Bitmap(pictureBox1.Image);

        List<ListThreeColumns> colorList = new List<ListThreeColumns>
        {

        };

        for (int y = 0; y < picture.Height; y++)
        {
            for (int x = 0; x < picture.Width; x++)
            {
                colorList.Add(new ListThreeColumns { XCoord = x, YCoord = y, Color = picture.GetPixel(x, y) });
            }
        }
        return colorList;
    }


    private void btnScanPixels_Click(object sender, EventArgs e)
    {
        List<ListThreeColumns> seznamBarev = GetPixels();
       MessageBox.Show(seznamBarev[6].ToString());


    }
private void btnImage1Load\u单击(对象发送方,事件参数e)
{
openFileDialog1.ShowDialog();
pictureBox1.ImageLocation=openFileDialog1.FileName;
}
公共类列表三列
{
public int XCoord{get;set;}
public int YCoord{get;set;}
公共颜色{get;set;}
}
私有列表GetPixels()
{
位图图片=新位图(pictureBox1.Image);
列表颜色列表=新列表
{
};
对于(int y=0;y
在这行中:

MessageBox.Show(seznamBarev[6].ToString());
。。。您正在访问列表的元素6,但只需调用它上的
ToString
。由于您没有覆盖
列表三元素
(顺便说一句,最好将其命名为
Pixel
),这意味着结果不会特别有用

你可以写:

ListThreeColumns pixel = seznamBarev[6];
MessageBox.Show(string.Format("{0}, {1} - {2}", pixel.X, pixel.Y, pixel.Color);
在这方面:

MessageBox.Show(seznamBarev[6].ToString());
。。。您正在访问列表的元素6,但只需调用它上的
ToString
。由于您没有覆盖
列表三元素
(顺便说一句,最好将其命名为
Pixel
),这意味着结果不会特别有用

你可以写:

ListThreeColumns pixel = seznamBarev[6];
MessageBox.Show(string.Format("{0}, {1} - {2}", pixel.X, pixel.Y, pixel.Color);
你想做什么? 如果您想在字符串中显示每个项目,可以使用Jon方式。 但最好将操作转移到您的类中。 如果重写ListThreeColumns类中的“ToString()”方法,代码将正常工作,不会发生更改

 public class ListThreeColumns
{
    public int XCoord { get; set; }
    public int YCoord { get; set; }
    public Color Color { get; set; }

    public override ToString()
    {
         return string.Format("X={0}, Y={1}, Color=({2};{3};{4})", 
             this.XCoord , this.YCoord , Color.R,Color.G,Color.B );
    }
}
你想做什么? 如果您想在字符串中显示每个项目,可以使用Jon方式。 但最好将操作转移到您的类中。 如果重写ListThreeColumns类中的“ToString()”方法,代码将正常工作,不会发生更改

 public class ListThreeColumns
{
    public int XCoord { get; set; }
    public int YCoord { get; set; }
    public Color Color { get; set; }

    public override ToString()
    {
         return string.Format("X={0}, Y={1}, Color=({2};{3};{4})", 
             this.XCoord , this.YCoord , Color.R,Color.G,Color.B );
    }
}
可能的重复可能的重复