每個人!我是編程新手,希望對您有所幫助!我正在嘗試回傳陣列的索引,但不知道錯誤是什么意思。我第一次得到這個。
這是我的第一堂課
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);
}
}
我在此代碼中“無法將 [] 索引應用于‘型別’型別的運算式”(最后 2 行)
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()]);
}
}
uj5u.com熱心網友回復:
如果要Group直接索引 a ,則必須提供索引器:
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# 不會查看您的 Group 型別并認為“它內部只有一個資料項,即一個陣列,因此我將允許某人在[1]Group 的實體旁邊放置一個索引說明符,然后我將檢索內部陣列中的專案”..
..它只是說“不能索引一個組”
如果你添加一個索引器,那么快樂的日子。你也可以這樣做:
class Group{
...
public Student GetStudentAt(int index){
return students[index];
}
然后呼叫:
Console.WriteLine(studentGroup.GetStudentAt(studentGroup.IndexOfMinGrade()));
概念上等價..
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/380764.html
上一篇:使二叉樹的每個節點具有相同的cookie所需的最小傳輸成本
下一篇:如何從整數集中獲取非重疊集?
