如何在C#中声明和显示变量?

如何在C#中声明和显示变量?,c#,C#,我有一个类库,它有两个构造函数。第一个构造函数接受两个参数,第二个接受三个参数。下面是我的类库代码。放代码比解释代码容易 public class Student { public string name; public string course; public MyDate bday; public Student(string name, string course) { th

我有一个类库,它有两个构造函数。第一个构造函数接受两个参数,第二个接受三个参数。下面是我的类库代码。放代码比解释代码容易

public class Student
    {
        public string name;
        public string course;
        public MyDate bday;

        public Student(string name, string course)
        {
            this.name = name;
            this.course = course;
        }

        public Student(string name, string course, MyDate bday)
        {
            this.name = name;
            this.course = course;
            this.bday = bday;
        }
MyDate库有另一个构造函数,它接受三个参数,即生日的日期、月份和年份。现在我有了一个包含3个列表框的表单,在第三个列表框中我将显示生日。我在代码中声明了生日(就像我在下面展示的那样),现在我在如何显示它上遇到了问题

MyDate[] bd = new MyDate[5] {  new MyDate(29, 3, 1990),
                                       new MyDate(30, 1, 1988),
                                       new MyDate(9, 6, 1987),
                                       new MyDate(2, 4, 1989),
                                       new MyDate(17, 8, 1986),
        };
        Student[] s = new Student[5] { new Student("John", "BSCS"),
                                       new Student("Paul", "BSIT"),
                                       new Student("George", "BSCP"),
                                       new Student("Jane", "BSCS"),
                                       new Student("May", "BSIT")
        };
谁能告诉我该怎么做?我试过这个学生[s=new Student[5]{new Student(“John”、“BSC”、bd[0])等等,但它给了我错误。我知道这是一个初学者问题,我也是一个初学者。谢谢

编辑: 初始化是在form1.cs中完成的。

您可以看到

您应该在构造函数下设置字段初始值设定项

class TestClass
{
    MyDate[] bd;
    Student[] s; 

    public TestClass()
    {
         bd = new MyDate[5] {  new MyDate(29, 3, 1990),
                                   new MyDate(30, 1, 1988),
                                   new MyDate(9, 6, 1987),
                                   new MyDate(2, 4, 1989),
                                   new MyDate(17, 8, 1986),
                            };

         s = new Student[5] { new Student("John", "BSCS"),
                                   new Student("Paul", "BSIT"),
                                   new Student("George", "BSCP"),
                                   new Student("Jane", "BSCS"),
                                   new Student("May", "BSIT")
                             };
    }
}
基本上是说你需要在构造函数中设置这个变量

class TestClass
{
    MyDate[] bd;
    Student[] s; 

    public TestClass()
    {
         bd = new MyDate[5] {  new MyDate(29, 3, 1990),
                                   new MyDate(30, 1, 1988),
                                   new MyDate(9, 6, 1987),
                                   new MyDate(2, 4, 1989),
                                   new MyDate(17, 8, 1986),
                            };

         s = new Student[5] { new Student("John", "BSCS"),
                                   new Student("Paul", "BSIT"),
                                   new Student("George", "BSCP"),
                                   new Student("Jane", "BSCS"),
                                   new Student("May", "BSIT")
                             };
    }
}

这里有一种方法可以做同样的事情:

    Student[] s = new Student[5];
    s[0] = new Student("John", "BSCS", bd[0]);
    s[1] = new Student("Bill", "BSCS", bd[1]);

基于此错误,您试图用另一个非静态字段初始化字段(成员数据);您不能这样做。最简单的修复方法是将初始化代码移动到构造函数中

class TestClass
{
    MyDate[] bd;
    Student[] s; 

    public TestClass()
    {
         bd = new MyDate[5] {  new MyDate(29, 3, 1990),
                                   new MyDate(30, 1, 1988),
                                   new MyDate(9, 6, 1987),
                                   new MyDate(2, 4, 1989),
                                   new MyDate(17, 8, 1986),
                            };

         s = new Student[5] { new Student("John", "BSCS"),
                                   new Student("Paul", "BSIT"),
                                   new Student("George", "BSCP"),
                                   new Student("Jane", "BSCS"),
                                   new Student("May", "BSIT")
                             };
    }
}
所以你的代码是

partial class Form
{
   MyDate[] bd = ...;
   Student[] s;

   public Form()
   {
      InitializeComponent();

      s = ...;
   }
}

你还应该链接你的
学生
构造函数,为什么你有自己的日期类而不是使用
系统.DateTime
?你还应该使用自动属性而不是
公共
字段

public class Student
    {
        public string name { get; set; }
        public string course { get; set; }
        public DateTime bday { get; set; }

        public Student(string name, string course)
        {
            this.name = name;
            this.course = course;
        }

        public Student(string name, string course, DateTime bday)
        : this(name, course)
        {
            this.bday = bday;
        }
}

我在这里肯定遗漏了什么,因为我无法重新创建这里讨论的错误。以下代码对我来说很好(.NET 4.0)

..我能够初始化如下所示的对象

            MyDate[] bd = new MyDate[5]
                          {
                              new MyDate(29, 3, 1990),
                              new MyDate(30, 1, 1988),
                              new MyDate(9, 6, 1987),
                              new MyDate(2, 4, 1989),
                              new MyDate(17, 8, 1986),
                          };

        Student[] s = new Student[5]
                          {
                              new Student("John", "BSCS", bd[0]),
                              new Student("Paul", "BSIT", bd[1]),
                              new Student("George", "BSCP", bd[2]),
                              new Student("Jane", "BSCS", bd[3]),
                              new Student("May", "BSIT", bd[4])
                          };

您什么时候会收到此错误?

请与我们分享您实际收到的错误。它表示“字段初始值设定项不能引用非静态字段blah blah blahError,这是自言自语。您不能使用
bd[0]
在您的字段初始值设定项中。将其移动到构造函数中。如果这是一个愚蠢的问题,我很抱歉,但是我应该将什么移动到构造函数中?谢谢Kal_Torak,但这也不起作用。它会给我各种各样的错误:-(哦,我假设代码在一个方法中,我的错。请看Freddie的回答。你的回答也是一样。我刚刚在构造函数中包含了
bd
数组初始化,所以接下来如果她要查找它的话。只需要两行代码。您好。我们被告知所有的初始化都是以.cs的形式进行的,而不是在构造函数中r在类库中。我尝试了Dan的解决方案,但我的问题是我们使用bd[0]等等。谢谢Dan。我会尝试这样做。我们被告知创建我们自己的MyDate类,我们的类库应该只包含构造函数和声明的变量。初始化这些变量应该在表单中完成。(希望你明白我的意思)错误在bd[0]中.你在form1.cs中初始化了这个吗?因为我在那里使用了这个代码,这就是我得到错误的地方。谢谢uHi James。我可以问一下你把初始化放在哪里了吗?因为我仍然收到相同的错误消息。我将如何调用它来显示在列表框中?谢谢u@SophiaIsabella,如果你问我在哪里做的“MyDate[]bd=new MyDate[5]{…},在我的Winform测试应用程序的一个按钮上点击“Student[]s=new Student[5]{…}”。谢谢James。我写的是一个全局声明,这就是为什么我得到所有错误的原因。但我现在修复了它。谢谢。