【问题标题】:Access List from another class其他班级的访问列表
【发布时间】:2011-04-12 15:14:11
【问题描述】:

谁能告诉我如何在一个类中创建一个列表并从另一个类中访问它?

【问题讨论】:

    标签: c# list inheritance dictionary scope


    【解决方案1】:
    public class MyClass {
    
        private List<string> myList = new List<string>();
    
        public List<string> GetList()
        {
            return myList;
        }
    } 
    

    你可以有任何东西而不是字符串。 现在您可以创建MyClass 的对象,并可以访问您已实现的公共方法以返回myList

    public class CallingClass {
    
        MyClass myClass = new MyClass();
    
        public void GetList()
        {
            List<string> calledList = myClass.GetList();
            ///More code here...
        }
    }
    

    【讨论】:

    • 谢谢你这个简洁的例子。
    • 谢谢,这是最有用和最有帮助的答案!
    • 但是每次你做 MyClass myClass = new MyClass();在另一个类中,列表又是空的......你如何访问 MyClass 现有列表与另一个类中的内容?
    【解决方案2】:

    要创建列表,请调用列表构造函数:

    class Foo
    {
        private List<Item> myList = new List<Item>();
    }
    

    为了让其他类可以访问它,添加一个公开它的公共属性。

    class Foo
    {
        private List<Item> myList = new List<Item();
    
        public List<Item> MyList
        {
            get { return myList; }
        }
    }
    

    要从另一个类访问列表,您需要引用Foo 类型的对象。假设你有这样一个引用,它被称为foo,那么你可以写foo.MyList来访问这个列表。

    您可能要小心直接公开列表。如果您只需要允许只读访问,请考虑改为公开ReadOnlyCollection

    【讨论】:

    • @Brian, 在访问类中创建一个 Foo 对象为 Foo objFoo=new Foo();然后以 List myList1=objFoo.myList; 的形式访问 MyList
    • 它是如何工作的?当您在另一个类中调用它时,它将是一个空列表。
    【解决方案3】:

    如果您需要将 List 声明为静态属性

    class ListShare 
    {
        public static List<String> DataList { get; set; } = new List<String>();
    }
    
    class ListUse
    {
        public void AddData()
        {
            ListShare.DataList.Add("content ...");
        }
    
        public void ClearData()
        {
            ListShare.DataList.Clear();
        }
    }
    

    【讨论】:

    • 我可以使用这个答案,我不太明白第一个,但我确实做了一些改变。
    • 类 ListUse { public void AddData(string data2add) { ListShare.DataList.Add(data2add); } } 类程序{ 静态无效 Main(){ Listuse dataAdd = new ListUse();字符串 data2add = "内容"; ListUse.AddData(data2add);
    猜你喜欢
    • 2017-06-20
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多