我对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.
}
}
}
作为补充,了解如何将项目添加到该列表也很有用。但是,一旦我知道如何访问它,我猜这应该很容易吗?
提前致谢!
答案 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.
}
}
}