带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'类型的表达式应用[]索引
。我尝试过各种各样的方法,比如创建一个单独的列表并将其添加到我的列表中。没有作品。
提前感谢您的帮助。
我对此相当陌生,可能错过了明显的…
您必须阅读通用约束
对于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处的元素(没有索引器?)。