[英]How do I access a variable in a generic class
我在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());
}
}
}
不受約束的泛型只能訪問object
類型上可用的方法或屬性。
約束(例如@ Mark-Yisri指定的約束)允許訪問與該約束匹配的方法和屬性,但隨后限制了允許與泛型類型或方法一起使用的類型。
此約束將泛型限制為只能使用LocalDataFolder或從LocalDataFolder繼承的類,但是可以訪問LocalDataFolder類型的對象中可用的方法和屬性。
public class PicturePage<T> where T : LocalDataFolder
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.