C # (wpf) после создания экземпляра объекта я не могу использовать его повторно - PullRequest
0 голосов
/ 08 февраля 2019

Я работаю над небольшим проектом и пытаюсь использовать объект для хранения данных.Только: имя, год и цена для хранения (не более 10 наименований).

//On click I get user input and I create new object instance
//This is addmovie.xaml.cs 

     private void btn_add_movie_Click(object sender, RoutedEventArgs e)
            {
                string m = input_movie_name.Text;
                Movie NewMovie = new Movie { Name = m };
            }

// This is Movie class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DeNiro
{
    public class Movie
    {
        public string Name {get; set;}
        public int year { get; set; }
        public string genre { get; set; }
        public int price { get; set; }
        public List<Movie> Moviez { get; set; }
    }
}

ПРОБЛЕМА: Это movielist.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace DeNiro
{
    /// <summary>
    /// Interaction logic for movielist.xaml
    /// </summary>
    public partial class movielist : Page
    {
        public movielist()
        {
            InitializeComponent();

            String test = NewMovie.Name;
        }
    }
}

Почему я не могу использоватьNewMovie.Name?

Есть ли способ создать новый экземпляр Movie в movielist.xaml.cs и получить из него ранее сохраненные данные?Пожалуйста, помогите.

1 Ответ

0 голосов
/ 08 февраля 2019

Я постараюсь сделать это настолько ясно, насколько смогу:

Проблема в том, что когда вы определяете переменную внутри функции без возврата или без передачи ее "возвращаемого" значения вдругая функция или свойство класса или ссылка, данные просто теряются (это не полностью программное объяснение, но оно поможет вам понять)

Теперь в вашем коде, после нажатия кнопки, новый экземпляркласс Movie (как вы его определили: имя, год и цена ) создан.и все, функция завершается, ничего не делая с NewMovie.

Что вы хотите сделать, это передать этот экземпляр новой функции:

public partial class movielist: Page
{

    // This is list, unlike array you can insert things to it as much as you want
    private List<Movie> MoviesList = new List<Movie>();

    public movielist()
    {
        InitializeComponent();
    }

    public void AddMovie(string newMovie)
    {
        this.MoviesList.Add(newMovie); // Adds new movie to the movies list
        String test = NewMovie.Name;
    }

}

И в:

private void btn_add_movie_Click(object sender, RoutedEventArgs e)
{
    string m = input_movie_name.Text;
    Movie NewMovie = new Movie { Name = m };
    this.movielistInstance.AddMovie(NewMovie);
}

И не забудьте установить private movielist movielistInstance = new movielist(); в addmovie.xaml.cs классе

и в следующий раз, пожалуйста, опубликуйте весь addmovie.xaml.cs, нам будет намного легче ответить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...