C# 如何允许用户修改代码中的列表?

C# 如何允许用户修改代码中的列表?,c#,list,visual-studio-2015,C#,List,Visual Studio 2015,我在我的计算机科学课上有一个作业,创建课程列表,向其中添加变量(即名称、前缀、学时),将这些课程显示在cmd上,然后允许用户添加或删除课程 我已经有课程列表,但是我无法编写正确的代码,允许用户添加或删除列表中的项目。我可以从用户那里收集变量来添加课程,但我不知道如何实际使用这些数据来创建课程。这是我的密码,如果有问题,我很抱歉;我已经尝试了很多东西,我对这也很陌生 我需要知道如何允许用户删除和/或向列表中添加课程。我下面的代码不起作用,不管我输入什么,它都会在列表中不断迭代到显示中 这是我为删除

我在我的计算机科学课上有一个作业,创建课程列表,向其中添加变量(即名称、前缀、学时),将这些课程显示在cmd上,然后允许用户添加或删除课程

我已经有课程列表,但是我无法编写正确的代码,允许用户添加或删除列表中的项目。我可以从用户那里收集变量来添加课程,但我不知道如何实际使用这些数据来创建课程。这是我的密码,如果有问题,我很抱歉;我已经尝试了很多东西,我对这也很陌生

我需要知道如何允许用户删除和/或向列表中添加课程。我下面的代码不起作用,不管我输入什么,它都会在列表中不断迭代到显示中

这是我为删除项目而编写的代码。它应该将用户输入作为一个整数保存,并将其转发到if语句,该语句将索引位置与整数值对应

        public static void Remove(int index)
        {
            List<Course> courseList = new List<Course>();
            Course c1 = new Course();
            Course c2 = new Course(2010, 3, "TCOM", "Technical Writing");
            Course c3 = new Course(2345, 3, "Math", "Discrete Mathematics");
            Course c4 = new Course(2332, 3, "Math", "Probablility and Data Analysis");

            courseList.Add(c1);
            courseList.Add(c2);
            courseList.Add(c3);
            courseList.Add(c4);

            courseList.RemoveAt(index);
        }
publicstaticvoidremove(int索引)
{
List courseList=新列表();
课程c1=新课程();
课程c2=新课程(2010年第3期,“TCOM”,“技术写作”);
课程c3=新课程(2345,3,“数学”,“离散数学”);
课程c4=新课程(2332,3,“数学”、“概率和数据分析”);
课程列表。添加(c1);
课程列表添加(c2);
课程列表。添加(c3);
课程列表。添加(c4);
课程列表RemoveAt(索引);
}
这个代码块应该添加一个课程。它适当地向用户请求变量并存储它们,但我不知道如何应用它们并将其添加到列表中

        public static void Add()
        {
            List<Course> courseList = new List<Course>();
            Course c1 = new Course();
            Course c2 = new Course(2010, 3, "TCOM", "Technical Writing");
            Course c3 = new Course(2345, 3, "Math", "Discrete Mathematics");
            Course c4 = new Course(2332, 3, "Math", "Probability and Data Analysis");

            courseList.Add(c1);
            courseList.Add(c2);
            courseList.Add(c3);
            courseList.Add(c4);
        }

        private static void ProcessChoice(int choice)
        {
            if (choice == 1)
            {
                Console.WriteLine("Choose a course to delete, with the first course being 0.");

                if (choice == 0)
                {
                    Remove(0);
                }

                if (choice == 1)
                {
                    Remove(1);
                }

                if (choice == 2)
                {
                    Remove(2);
                }

                if (choice == 3)
                {
                    Remove(3);
                }

                if (choice == 4)
                {
                    Remove(4);
                }

                if (choice == 5)
                {
                    Remove(5);
                }

            }

            if (choice == 2)
            {
                Console.Write("What is the course number? ");
                int coursenum = Int32.Parse(Console.ReadLine());

                Console.Write("What is the prefix of your course? ");
                string pref = Console.ReadLine();

                Console.Write("What is the name of your course? ");
                string name = Console.ReadLine();

                Console.Write("How many credit hours is the course worth? ");
                int crehours = Int32.Parse(Console.ReadLine());

                List<Course> courseList = new List<Course>();
                Course c5 = new Course(coursenum, crehours, pref, name);
                courseList.Add(c5);

                Console.WriteLine(); // Once again to add space.
            }
publicstaticvoidadd()
{
List courseList=新列表();
课程c1=新课程();
课程c2=新课程(2010年第3期,“TCOM”,“技术写作”);
课程c3=新课程(2345,3,“数学”,“离散数学”);
课程c4=新课程(2332,3,“数学”、“概率与数据分析”);
课程列表。添加(c1);
课程列表添加(c2);
课程列表。添加(c3);
课程列表。添加(c4);
}
私有静态void ProcessChoice(int-choice)
{
如果(选项==1)
{
WriteLine(“选择要删除的课程,第一个课程为0。”);
如果(选项==0)
{
移除(0);
}
如果(选项==1)
{
移除(1);
}
如果(选项==2)
{
移除(2);
}
如果(选项==3)
{
移除(3);
}
如果(选项==4)
{
移除(4);
}
如果(选项==5)
{
移除(5);
}
}
如果(选项==2)
{
控制台。写下(“课程号是多少?”);
int-coursenum=Int32.Parse(Console.ReadLine());
控制台。写下(“你的课程前缀是什么?”);
字符串pref=Console.ReadLine();
控制台。写下(“你的课程名称是什么?”);
字符串名称=Console.ReadLine();
控制台。写下(“这门课程值多少学分?”);
int-crehours=Int32.Parse(Console.ReadLine());
List courseList=新列表();
课程c5=新课程(课程编号、学时、预科、名称);
课程列表。添加(c5);
Console.WriteLine();//再次添加空间。
}
正如David Kron所说,您的方法无法访问您的
列表
。请使用
字段
存储
列表
的内容,例如:

public class X
{
    private List<Course> courseList = new List<Course>();
}
公共类X
{
私有列表courseList=新列表();
}
这将创建一个新的
List
实例,您可以在类的实例中访问该实例。您可以使用将项目添加到列表中,也可以使用删除项目


ProcessChoice()
中的if语句是不必要的。您可以简单地将用户的输入与列表中的数据进行比较。您可以使用来迭代列表。

问题在于您的函数不共享数据。列表的范围在方法(函数)级别,而不是类级别(函数之间共享)。请看:如果(choice==1){…如果(choice==0){您将永远无法获得此选项==0或除==1之外的任何内容。此处的代码太多,并且没有足够具体的问题陈述,则通过索引删除课程项目可能会使您的程序崩溃。“我无法编写正确的代码"不是一个有用的问题陈述。请简化代码,以便您提供的代码能够清楚地显示您尝试了什么,以及该代码的功能的精确解释,以及该代码与您想要的有何不同。请阅读以获取有关如何以清晰、负责任的方式表达您的问题的建议。@DavidKron我已尝试移动我的列表只是在类级别内,它不会传递到我的方法。我也曾尝试为此创建一个访问器,但它也不起作用。我的访问器只是公共列表courseList{get return Course;}。这是正确的形式还是我应该尝试其他形式。正如我所说,我对编写代码非常陌生。