您好,我在访问已将参数传递给函数的通用列表的属性时遇到错误。我的代码如下:

程序

static void Main(string[] args)
{
    var stregsystem = new Stregsystem();
}


类用户

public int UserID = 10;


类Stregsystem

List<User> users = new List<User>();

public Stregsystem() {
    users.Add(new User());
    users.Add(new User());
    users.Add(new User());

    CSV.Write<User>(users);
}


CSV类

public static void Write<T>(List<T> list) {
    Console.WriteLine(list.Count());

    Console.WriteLine(list[0].UserID);
}


我收到以下错误:


  错误1'T'不包含'UserID'的定义,并且找不到扩展名>方法'UserID'接受类型'T'的第一个参数(是否>缺少using指令或程序集引用?)> D :\ Development \ OOP \ CSV.cs 14 39 OOP


我假设错误在于Write函数,但我不知道问题出在哪里。

最佳答案

Write是通用方法。按原样编写,您可以使用任何T类型调用它。并且您当然不能假定任何类型都具有属性UserId。改为这样做:

public static void Write(List<User> list)
{
    Console.WriteLine(list.Count);
    Console.WriteLine(list[0].UserID);
}

10-05 22:29
查看更多