我在Console.WriteLine(item.type)
处使用以下代码时出现CS1061错误,这对我来说似乎很简单。
有人可以帮助我吗?
namespace Test
{
class Program
{
static void Main(string[] args)
{
LocalPage lp = new LocalPage();
lp.Put();
}
}
public class LocalDataFolder
{
public LocalDataFolder() { }
public int type;
}
public class PicturePage<T>
{
public List<T> folders = new List<T>() { };
public void Put()
{
foreach (T item in folders)
Console.WriteLine(item.type);
}
}
public class LocalPage : PicturePage<LocalDataFolder>
{
public LocalPage()
{
folders.Add(new LocalDataFolder());
}
}
}
答案 0 :(得分:3)
无约束泛型只能访问object
类型上可用的方法或属性。
约束(例如@ Mark-Yisri指定的约束)允许访问与约束匹配的方法和属性,但随后限制允许与泛型类型或方法一起使用的类型。
此约束限制泛型使用LocalDataFolder或从LocalDataFolder继承的类,但允许访问LocalDataFolder类型的对象中可用的方法和属性。
public class PicturePage<T> where T : LocalDataFolder
答案 1 :(得分:1)
item.type
是否正确?在Java中,泛型不能包含与之关联的任何字段,您必须使用T extends LocalDataFolder
。不确定C#中的相关语法是什么。
试试这个:
public class PicturePage<T> where T : LocalDataFolder
{
public List<T> folders = new List<T>() { };
public void Put()
{
foreach (T item in folders)
Console.WriteLine(item.type);
}
}