Как передать заполненный список другому классу? - PullRequest
0 голосов
/ 13 января 2019

Я создал точечную структуру, которая содержит x, y. Я также создал класс для добавления точек в список. Я пытаюсь проанализировать XML-файл в классе Reader и заполнить список точками из этого XML-файла. После этого я пытаюсь создать другой формат данных в «Классе писателя» с точками, которые я проанализировал в классе Reader. Примеры кода - это просто пример, но я пытаюсь сделать то же самое.

Обычно с помощью кнопки 1 необходимо считывать точки и заполнять их списком, с помощью кнопки 2 необходимо создавать другой формат данных. Но это не работает. Чего мне не хватает?

Структура точки:

public struct Point2D 
{
        #region Constructors
        public Point2D(double x, double y)
        {
            this.X = x;
            this.Y = y;
        }
        #endregion Constructors
        public readonly double X;   
        public readonly double Y;
}

Класс коллекции:

public class List 
{
    public List<Point2D> points { get; }

    public List()
    {
        this.points = new List<Point2D>();
    }

    public void AddPoint(Point2D p)
    {
        this.points.Add(p);
    }
}

Reader:

public class Reader
{
    public static void Read()
    {
        double X = 1.5;
        double Y = 2.5;

        var list = new List();

        list.AddPoint(new Point2D(X, Y));  
    }
}

Автор:

public static class Writer
{
    public static void GetPoints(List list)
    {
        var X = list.points[0].X.ToString();
        StreamWriter sr = new StreamWriter(@"...\test.txt");
        sr.WriteLine(X);
    }
}

Применение:

public partial class Form1 : Form
{
    public List List { get; private set; }
    public Form1()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Reader.Read();
    }
    private void button2_Click(object sender, EventArgs e)
    {
        Writer.GetPoints(this.List);
    }
}

1 Ответ

0 голосов
/ 13 января 2019

Я мог видеть, что Список свойство Form1 не назначено. Так что Writer.GetPoints (this.List); завершается ошибкой.

Вы можете вернуть список, когда reader.Read () и назначить его со свойством List Form1 , как показано ниже.

private void button1_Click(object sender, EventArgs e)
{
    this.List= Reader.Read();
}

Метод чтения следует изменить, как показано ниже.

public class Reader
{
    public static List Read()
    {
        double X = 1.5;
        double Y = 2.5;

        var list = new List();

        list.AddPoint(new Point2D(X, Y));
        return list;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...