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

C# 如何在C中访问另一个类中的列表#,c#,xamarin,C#,Xamarin,我对C#非常陌生,所以请忽略我对这个问题的无知。但我在网上搜索过,找不到有意义的解决方案 基本上,我有一个列表存储在CommonClass.CS中,如下所示: using System; using System.Collections.Generic; namespace NewParkingApp { public class CommonClass { public List < string > itemData = new List <

我对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"  
            };  

    }
}
使用系统;
使用System.Collections.Generic;
名称空间NewParkingApp
{
公共类公共类
{
公共列表itemData=新列表()
{  
“安卓”,
“IOS”,
“Windows Phone”,
“Xamarin IOS”,
“Xamarin形式”,
“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.
        }
    }
}
<代码>使用基础; 使用制度; 使用System.Collections.Generic; 使用UIKit; 名称空间NewParkingApp { 公共部分类ResultViewController:UIViewController { public ResultViewController(IntPtr句柄):基(句柄) { } 公共覆盖无效ViewDidLoad() { base.ViewDidLoad(); List itemData=CommonClass.itemData; mainListview.Source=新的TableViewSource(itemData); } 公共覆盖无效DidReceiveMemoryWarning() { base.DidReceiveMemoryWarning(); //释放所有未使用的缓存数据、图像等。 } } } 作为补充,了解如何将项目添加到该列表中也很有用。但我猜,一旦我知道如何访问它,这应该很容易


提前谢谢

在继续之前,您必须知道是希望此列表在多个对象之间共享,还是希望创建的
CommonClass
的每个实例都是唯一的

如评论所述:

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

    CommonClass commonClass = new CommonClass();
    List<string> itemData = commonClass.itemData;
    
    CommonClass CommonClass=新的CommonClass();
    List itemData=commonClass.itemData;
    
  • 对于共享列表,将
    static
    关键字添加到类的
    itemData
    ,如下所示:

    public static List itemData=new List()

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

之后,您可以使用
itemData.Add(“任意”),但实际上这可以很容易地在线检查

//首先用该代码更改您的类commanclass
使用制度;
使用System.Collections.Generic;
名称空间NewParkingApp
{
公共类公共类
{
公共静态列表itemData=新列表()
{  
“安卓”,
“IOS”,
“Windows Phone”,
“Xamarin IOS”,
“Xamarin形式”,
“Xamarin_Android”
};  
}
}
//课后是你过去的主要课程
使用基础;
使用制度;
使用System.Collections.Generic;
使用UIKit;
名称空间NewParkingApp
{
公共部分类ResultViewController:UIViewController
{
public ResultViewController(IntPtr句柄):基(句柄)
{
}
公共覆盖无效ViewDidLoad()
{
base.ViewDidLoad();
List itemData=CommonClass.itemData;
mainListview.Source=新的TableViewSource(itemData);
}
在这里输入代码
公共覆盖无效DidReceiveMemoryWarning()
{
base.DidReceiveMemoryWarning();
//释放所有未使用的缓存数据、图像等。
}
}
}

您需要使用
new
创建
CommonClass
的实例,或者创建
itemData
静态
——尽管您应该从任何基本的C#教程
List itemData=CommonClass.itemData此代码未编译此问题(以及代码)表明您确实需要了解类与该类实例之间的区别看起来您需要在
CommonClass
中使用静态属性。您应该在声明成员时使用关键字
static
。另外,看看关键字
readonly
@Bahrom,这正是我所需要的-谢谢你的帮助!
//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.
        }
    }
}