无法将带有 [] 的索引应用于 'type' 类型的表达式
Cannot apply indexing with [] to an expression of type 'type'
大家好!我是编程新手,希望得到您的帮助!我正在尝试 return 和数组的索引,但不知道错误是什么意思。我第一次得到这个。
这是我的第一个class
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);
}
}
我在这段代码(最后两行)中遇到了“无法将 [] 的索引应用于类型 '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()]);
}
}
如果你想直接索引一个 Group
,你必须提供一个索引器:
public class Group
{
public Student this[int i]{
get { return students[i]; }
set { students[i] = value; }
}
...
你看,你的小组有一个学生数组,但这并不意味着它本身可以像数组一样直接索引..
你什么时候做的:
Group studentGroup = ...
您稍后尝试访问组内某个索引处的内容:
studentGroup[studentGroup.IndexOfMinGrade()]; //like this
studentGroup[1]; //or like this, for example
C# 不会查看您的组类型并认为“它内部只有一个数据项,这是一个数组,所以我会允许有人在实例旁边放置一个索引说明符,如 [1]
一个组,我将从内部数组中检索该项目"..
..它只是说“无法索引组”
如果你添加了一个索引器,那么祝你好运。你也可以这样做:
class Group{
...
public Student GetStudentAt(int index){
return students[index];
}
然后调用:
Console.WriteLine(studentGroup.GetStudentAt(studentGroup.IndexOfMinGrade()));
概念上等同..
大家好!我是编程新手,希望得到您的帮助!我正在尝试 return 和数组的索引,但不知道错误是什么意思。我第一次得到这个。
这是我的第一个class
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);
}
}
我在这段代码(最后两行)中遇到了“无法将 [] 的索引应用于类型 '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()]);
}
}
如果你想直接索引一个 Group
,你必须提供一个索引器:
public class Group
{
public Student this[int i]{
get { return students[i]; }
set { students[i] = value; }
}
...
你看,你的小组有一个学生数组,但这并不意味着它本身可以像数组一样直接索引..
你什么时候做的:
Group studentGroup = ...
您稍后尝试访问组内某个索引处的内容:
studentGroup[studentGroup.IndexOfMinGrade()]; //like this
studentGroup[1]; //or like this, for example
C# 不会查看您的组类型并认为“它内部只有一个数据项,这是一个数组,所以我会允许有人在实例旁边放置一个索引说明符,如 [1]
一个组,我将从内部数组中检索该项目"..
..它只是说“无法索引组”
如果你添加了一个索引器,那么祝你好运。你也可以这样做:
class Group{
...
public Student GetStudentAt(int index){
return students[index];
}
然后调用:
Console.WriteLine(studentGroup.GetStudentAt(studentGroup.IndexOfMinGrade()));
概念上等同..