带int数组的列表-访问数组

本文关键字:数组 访问 列表 int | 更新日期: 2023-09-27 17:51:19

我有一个类(学生),有两个字符串和一个int数组

第二个类然后这样做:

List<student> myS = new List<student>();

所有这些工作正确,我有一个包含多个学生的列表。然而,我很难访问int[]中的值。

因此,我的学生列表是从数据库中填充到列表中。

然后我有一个泛型类,它有一个参数列表,然后我想作为一个数据表。将为student类、subjects类和其他类调用泛型类——其中一些类可能包含数组,而另一些则不包含。

如果我调试并逐步执行,我得到以下内容:(() myS.stu[6]。termMark[1],值为50。但是如果我输入int d =stu[6]。termMark[1]错误是T不包含termMark的定义,并且没有找到接受类型为T的第一个参数的扩展方法'termMark'。

int d = myS[0][1]返回错误

不能对'T'类型的表达式应用[]索引

。我尝试过各种各样的方法,比如创建一个单独的列表并将其添加到我的列表中。没有作品。

提前感谢您的帮助。

我对此相当陌生,可能错过了明显的…

带int数组的列表-访问数组

您必须阅读通用约束
对于t类型的参数,不能做太多事情。
如果函数接受student类型的参数,则添加如下约束

private static void NewMethod<T>(List<T> myS) where T : student
{
        int d = myS[0].IntArray[1];
}

以下与你的问题无关…
如果你给你的类添加索引器你可以让它更短一些

public class student
{
    public int[] IntArray;
    public int this[int x]
    {
        get
        {
            return IntArray[x];
        }
    }
}
private static void NewMethod<T>(List<T> myS) where T : student
{
        int d = myS[0][3];
 }

可能类型T没有任何索引器的定义。但是,你的领域(int[])可以。因此,不要在对象(student)上调用索引器,而是在对象的字段上调用它。因此,对于这个答案,我假设你的对象被声明为这样的类

public class student {
   public string S { get; set; }
   public string s { get; set; }
   public int[] integers { get; set; }
}

现在,您确实可以在整数字段上调用indexers,但不能在学生对象本身上调用(它没有任何索引机制)。例如,

int d = myS[0].integers[1]; // <-- your code should be

上面的代码(如果编译的话)会给出列表中第一个对象的索引为1的元素(第二个元素)。相反,您调用的是学生索引1处的元素(没有索引器?)。