heh*_*324 5 .net c# algorithm c#-5.0 .net-5
每个人!我是编程新手,希望得到您的帮助!我正在尝试返回数组的索引,但不知道错误是什么意思。我第一次得到这个。
这是我的第一堂课
using System;
using System.Linq;
public class Group
{
private Student[] students;
public Group(Student[] students)
{
if(students.Length < 5)
{
throw new ArgumentException("Incorrect group");
}
this.students = students;
}
public int IndexOfMaxGrade()
{
Student[] sorted = students.OrderBy(c => c.grade).ToArray();
//int max = sorted[^1].grade;
//foreach (var item in students)
//{
// if(item.grade == max)
// {
// }
//}
return Array.IndexOf(students, sorted[^1].grade);
}
public int IndexOfMinGrade()
{
Student[] sorted = students.OrderBy(c => c.grade).ToArray();
return Array.IndexOf(students, sorted[0].grade);
}
}
Run Code Online (Sandbox Code Playgroud)
我在这段代码上得到了“无法将[]索引应用到'type'类型的表达式”(最后两行)
Group studentGroup;
try
{
studentGroup = new Group(students.ToArray());
}
catch (ArgumentException argumentException)
{
Console.WriteLine(argumentException.Message);
return;
}
Console.WriteLine(studentGroup[studentGroup.IndexOfMinGrade()]);
Console.WriteLine(studentGroup[studentGroup.IndexOfMaxGrade()]);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想Group直接索引 a,你必须提供一个索引器:
public class Group
{
public Student this[int i]{
get { return students[i]; }
set { students[i] = value; }
}
...
Run Code Online (Sandbox Code Playgroud)
您会看到,您的小组有一个学生数组,但这并不意味着它本身可以像数组一样直接可索引。
当你这样做时:
Group studentGroup = ...
Run Code Online (Sandbox Code Playgroud)
您稍后尝试访问组内某个索引处的某些内容:
studentGroup[studentGroup.IndexOfMinGrade()]; //like this
studentGroup[1]; //or like this, for example
Run Code Online (Sandbox Code Playgroud)
C# 不会查看您的 Group 类型并认为“它内部只有一个数据项,即一个数组,因此我将允许某人在[1]Group 实例旁边放置一个索引说明符,然后我将检索内部数组中的项目“..
..它只是说“无法索引组”
如果您添加索引器,那就幸福了。你也可以这样做:
class Group{
...
public Student GetStudentAt(int index){
return students[index];
}
Run Code Online (Sandbox Code Playgroud)
然后打电话:
Console.WriteLine(studentGroup.GetStudentAt(studentGroup.IndexOfMinGrade()));
Run Code Online (Sandbox Code Playgroud)
概念上等同..
| 归档时间: |
|
| 查看次数: |
4744 次 |
| 最近记录: |