如何在C#中访问另一个类中的列表

时间:2018-03-18 12:00:24

标签: c# xamarin

我对C#非常陌生,所以请忽略我对这个问题的无知。但我在网上搜索过,无法找到合理的解决方案。

基本上,我有一个存储在CommonClass.CS中的列表,如下所示:

using System;
using System.Collections.Generic;

namespace NewParkingApp
{
    public class CommonClass
    {
        public List < string > itemData = new List < string > ()  
            {  
                "Android",  
                "IOS",  
                "Windows Phone",  
                "Xamarin-IOS",  
                "Xamarin-Form",  
                "Xamarin_Android"  
            };  

    }
}

从另一个班级开始,我希望能够访问该列表。这是我到目前为止访问类的内容:

using Foundation;
using System;
using System.Collections.Generic;
using UIKit;

namespace NewParkingApp
{
    public partial class ResultViewController : UIViewController
    {
        public ResultViewController (IntPtr handle) : base (handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            List<string> itemData = CommonClass.itemData;
            mainListview.Source = new TableViewSource(itemData);  
        }

        public override void DidReceiveMemoryWarning()
        {
            base.DidReceiveMemoryWarning();
            // Release any cached data, images, etc that aren't in use.
        }
    }
}

作为补充,了解如何将项目添加到该列表也很有用。但是,一旦我知道如何访问它,我猜这应该很容易吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

在继续之前,您必须知道是否希望此列表在许多对象中共享,或者为您创建的CommonClass的每个实例唯一

正如评论所述:

  • 对于每个CommonClass实例的唯一列表,请更改itemData分配以使用实例成员:

    CommonClass commonClass = new CommonClass();
    List<string> itemData = commonClass.itemData;
    
  • 对于共享列表,将static关键字添加到您的班级itemData中:

    public static List<string> itemData = new List<string>()

    另请注意,List类仅适用于一个线程操作(即在任何给定时间只有一个对象可以读取或写入列表),一旦开始处理多线程,您应该选择线程安全类型。

之后您可以使用itemData.Add("whatever");,但实际上可以在线轻松查看。 Here's just one example at dotnetperls.com

答案 1 :(得分:1)

//firt change your class commanclass with that code 

using System;
using System.Collections.Generic;

namespace NewParkingApp
{
    public class CommonClass
    {
        public static List < string > itemData = new List < string > ()  
            {  
                "Android",  
                "IOS",  
                "Windows Phone",  
                "Xamarin-IOS",  
                "Xamarin-Form",  
                "Xamarin_Android"  
            };  

    }
}

//after class your main class in past 
using Foundation;
using System;
using System.Collections.Generic;
using UIKit;

namespace NewParkingApp
{
    public partial class ResultViewController : UIViewController
    {
        public ResultViewController (IntPtr handle) : base (handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            List<string> itemData = CommonClass.itemData;
            mainListview.Source = new TableViewSource(itemData);  
        }
    enter code here
        public override void DidReceiveMemoryWarning()
        {
            base.DidReceiveMemoryWarning();
            // Release any cached data, images, etc that aren't in use.
        }
    }
}