创建一个类构造函数,该构造函数根据参数(C#)初始化其他类型的对象变量
我是新的编码,所以我希望这是明确的 我创建了两个新班级:一个是学生,一个是成绩册。其施工人员如下:创建一个类构造函数,该构造函数根据参数(C#)初始化其他类型的对象变量,c#,class,parameters,constructor,C#,Class,Parameters,Constructor,我是新的编码,所以我希望这是明确的 我创建了两个新班级:一个是学生,一个是成绩册。其施工人员如下: Student(string studentName, string gradeBookTitle); Gradebook(double testWeight, double quizWeight, double assignmentWeight, string[] studentNameArray); 我想使用Gradebook.studentNameArray参数中的
Student(string studentName, string gradeBookTitle);
Gradebook(double testWeight, double quizWeight,
double assignmentWeight, string[] studentNameArray);
我想使用Gradebook.studentNameArray参数中的名称为每个名称初始化学生对象。这样,当用户创建成绩册时,他们会自动为班级中的每个学生创建一个学生对象
但是,我遇到了一些问题,因为您无法使用数组的内容来命名新变量。我想我是想得太多了。。。有没有更简单的方法来组织这一切?或者在构造函数中创建这些学生变量的另一种方法?您可以从studentNameArray在构造函数中填充student类型的列表。然而,野外年龄不会设置为这样做。如果还想设置年龄,则需要返回并修改列表,或者将studentNameArray参数更改为list类型的参数
private List<Student> _students;
private string _title;
public Gradebook(double testWeight, double quizWeight,
double assignmentWeight, string[] studentNameArray)
{
this._testWeight = testWeight;
this._quizWeight = quizWeight;
this._assignmentWeight = assignmentWeight;
this._students = new List<Student>;
foreach(var name in studentNameArray)
{
_students.Add(new Student(name, 0, this._title);
}
}
private List\u学生;
私有字符串\u标题;
公开成绩册(双倍测重、双倍测重、,
双赋值权重,字符串[]studentNameArray)
{
这个._testWeight=testWeight;
这个._quizWeight=quizWeight;
此._assignmentWeight=assignmentWeight;
这个。_学生=新列表;
foreach(studentNameArray中的变量名)
{
_添加(新学生(姓名,0,此._标题);
}
}
你可以使用字典,其中键是学生的名字。有点像这样(在这里做一些假设,但希望这能告诉你基本想法):
公共IDictionary StudentDictionary{get;set;}
公开成绩册(双倍测重、双倍测重、,
双赋值权重,字符串[]studentNameArray){
StudentDictionary=新字典();
foreach(studentNameArray中的变量名){
添加(姓名,新学生(姓名,this.Title));
}
}
User..学生是否有其他构造函数,或者您希望在构造函数中设置哪些默认值。类似的操作可以完成
class Gradebook
{
public Gradebook(double testWeight, double quizWeight, double assignmentWeight, string[] studentNameArray)
{
this.TestWeight = testWeight;
this.QuizWeight = quizWeight;
this.AssingmentWeight = assignmentWeight;
this.Students = new List<Student>();
foreach(var name in studentNameArray)
Students.Add(new Student(
studentName: name,
age: 0,
gradeBookTitle: ""
)
);
}
public double TestWeight { get; set; }
public double QuizWeight { get; set; }
public double AssingmentWeight { get; set; }
public IList<Student> Students { get; set; }
}
class Student
{
public Student(string studentName, int age, string gradeBookTitle)
{
}
}
班级成绩册
{
公开成绩册(双倍测试权重、双倍quizWeight、双倍赋值权重、字符串[]studentNameArray)
{
this.TestWeight=TestWeight;
this.QuizWeight=QuizWeight;
this.AssingmentWeight=分配权重;
this.Students=newlist();
foreach(studentNameArray中的变量名)
学生。添加(新学生)(
学生姓名:,
年龄:0,,
书名:“
)
);
}
公共双测试权重{get;set;}
公共双QuizWeight{get;set;}
公共双分配权重{get;set;}
公共IList学生{get;set;}
}
班级学生
{
公立学生(string studentName、int age、string gradeBookTitle)
{
}
}
我遇到了问题,因为你不能用数组的内容来命名一个新变量
什么?@PrestonGuillot OP问了很多新程序员同样的问题:如何动态命名一个变量..这几乎总是一个错误的问题。@SimonWhitehead,想解释一下为什么它是错误的q吗问题?通常有一种更圆滑的方法吗?没有一种方法可以做到这一点。这就是为什么这是一个错误的问题。如果你正在进入“不可能做到”的阶段territory,您通常会考虑您试图错误地执行的操作。如果您在创建成绩册时没有年龄信息,为什么要初始化一个学生对象,并将年龄作为必需参数?看起来您只有一个学生姓名列表,没有年龄。如果两个学生姓名相同,会发生什么情况?可能是什么他通过使用字典得到了什么?这里的列表似乎更合适。“在这里做一些假设”。其中之一是学生的名字足够独特。
class Gradebook
{
public Gradebook(double testWeight, double quizWeight, double assignmentWeight, string[] studentNameArray)
{
this.TestWeight = testWeight;
this.QuizWeight = quizWeight;
this.AssingmentWeight = assignmentWeight;
this.Students = new List<Student>();
foreach(var name in studentNameArray)
Students.Add(new Student(
studentName: name,
age: 0,
gradeBookTitle: ""
)
);
}
public double TestWeight { get; set; }
public double QuizWeight { get; set; }
public double AssingmentWeight { get; set; }
public IList<Student> Students { get; set; }
}
class Student
{
public Student(string studentName, int age, string gradeBookTitle)
{
}
}