簡體   English   中英

如何在通用類中訪問變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM