C# (wpf) 创建对象实例后,我无法重用它



我正在做小项目,我正在尝试使用对象来存储数据。它的唯一:要存储的名称,年份和价格(最多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?

有没有办法在movielist.xaml中创建新的电影实例.cs并从中获取以前存储的数据?请帮忙。

我会尽量做到清楚:

问题是因为当你在函数内定义一个变量而不返回或不将其"return"值传递给另一个函数或类属性或引用时,数据只是浪费了(这不是完全以编程方式的解释,但它会帮助你理解(

现在,在您的代码中,单击按钮后,将创建类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,这将使我们更容易回答。

最新更新