Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言保存和访问类列表#_C#_Class_Oop_Xamarin_Xamarin.forms - Fatal编程技术网

C# 用C语言保存和访问类列表#

C# 用C语言保存和访问类列表#,c#,class,oop,xamarin,xamarin.forms,C#,Class,Oop,Xamarin,Xamarin.forms,我在Xamarin.Forms中有一个应用程序,它应该允许通过调用AddCartList将新电影添加到列表中。我还试图访问列表中的每个元素 var moviesToRent = new MoviesToRent(); string movie_info = ""; foreach (MovieRentCart movie in moviesToRent.movieRentList) { movie_info = movie_info + "\n" + movie.movieTit

我在Xamarin.Forms中有一个应用程序,它应该允许通过调用AddCartList将新电影添加到列表中。我还试图访问列表中的每个元素

var moviesToRent = new MoviesToRent();
string movie_info = "";
foreach (MovieRentCart movie in moviesToRent.movieRentList)
{
        movie_info = movie_info + "\n" + movie.movieTitle + " (" + movie.movieReleaseDate + ") [" + movie.movieDuration + " minutes]";            
 }
 this.movie_details.Text = movie_info;
我有一个存储电影信息的类:

public class Movie
{
    public string movieTitle { get; set; }
    public string movieReleaseDate { get; set; }
    public int movieDuration { get; set; }
    public double movieRentalPrice { get; set; }
    public string movieRentType { get; set; }

    public Movie(string mtitle, string mdate, int mtime, double mprice, string type)
    {
        movieTitle = mtitle;
        movieReleaseDate = mdate;
        movieDuration = mtime;
        movieRentalPrice = mprice;
        movieRentType = type;
    }
}
这将创建用户选择租用的电影列表:

class MoviesRentCart
{
        public List<Movie> movieRentList;
        public MoviesToRent()
        {
            movieRentList = new List<MovieRent>();
        }

        public static MoviesToRent addCartList(string title, string date, int duration, double price, string type)
        {

            MoviesToRent movieList = new MoviesToRent();

            Movie newMovie = new Movie(title, date, duration, price, type);

            movieList.movieRentList.Add(newMovie);

            return movieList;
         }
}
然后,将显示上一页。当用户选择要添加的其他电影时,下一页(与电影添加到列表中的页面相同)应显示用户已选择租用的所有电影的详细信息(在列表中)


但是,这不会显示任何内容。我做错了什么?电影应该被添加到列表中,并且应该通过迭代列表来显示

您发布的代码存在一些问题:

  • 在上一个代码示例中,您正在创建MoviesToRent类的新实例。这个新实例将始终是空列表movieRentList,因为您在构造函数中将其实例化为空列表
  • addCartList方法不应该创建自己的新实例,并且这个返回值似乎没有在您发布的代码中使用。将此方法设置为静态真的有意义吗
  • 如果我正确理解了你的问题,你需要保留对添加到movieRentList中的电影的引用

    最快的修复方法是使整个类保持静态:

    public static class MoviesRentCart
    {
            public static List<Movie> movieRentList;
    
            public static void addCartList(string title, string date, int duration, double price, string type)
            {
                Movie newMovie = new Movie(title, date, duration, price, type);
    
                movieRentList.Add(newMovie);
             }
    }
    
    公共静态类MoviesRentCart
    {
    公共静态列表movieRentList;
    公共静态void addCartList(字符串标题、字符串日期、整数持续时间、双倍价格、字符串类型)
    {
    Movie newMovie=新电影(标题、日期、持续时间、价格、类型);
    添加(新电影);
    }
    }
    
    另一种方法是不将addCartList设置为静态方法,然后在屏幕之间共享MoviesToRent的实例:

    public class MoviesRentCart
    {
            public List<Movie> movieRentList = new List<Movie>();
    
            public void addCartList(string title, string date, int duration, double price, string type)
            {
                Movie newMovie = new Movie(title, date, duration, price, type);
    
                movieRentList.Add(newMovie);
             }
    }
    
    公共类电影租赁车
    {
    public List movieRentList=新列表();
    public void addCartList(字符串标题、字符串日期、整数持续时间、双倍价格、字符串类型)
    {
    Movie newMovie=新电影(标题、日期、持续时间、价格、类型);
    添加(新电影);
    }
    }
    

    如果您使用的是Xamarin.Forms,则可以在应用程序页面上存储指向此实例的链接,也可以将其作为参数传递给需要数据的其他页面。

    谢谢。关于解决方案1,当我使用以下行时,尝试调用addCartList会导致应用程序中断:
    MoviesRentCart.addCartList(this.title.Text、this.release\u date.Text、this.run\u time.Text、this.total.Text、this.type.Text)@user10292318 1)静态版本是错误的做法,不应建议使用。2) 如果你的建议版本不起作用,你必须显示你的代码版本,并说明错误是什么。你说的是“我有一个错误,这是一些代码中的一个秘密,我不会告诉你”——当然,没有人能帮你。
    
    public class MoviesRentCart
    {
            public List<Movie> movieRentList = new List<Movie>();
    
            public void addCartList(string title, string date, int duration, double price, string type)
            {
                Movie newMovie = new Movie(title, date, duration, price, type);
    
                movieRentList.Add(newMovie);
             }
    }