C#新手求助:如何访问另一个类中的List集合
嘿,别担心,刚接触C#遇到这种问题太正常啦!我给你几个简单可行的方法,你可以根据自己的需求来选:
方法1:创建CommonClass的实例访问(最基础的方式)
因为你定义的itemData是实例成员,意思是每个CommonClass的对象都有一份这个列表,所以需要先创建一个CommonClass的实例,再通过实例访问它:
// 在你要访问的另一个类里,记得先引入命名空间 using NewParkingApp; public class AnotherClass { public void GetItemData() { // 先创建CommonClass的实例 CommonClass commonObj = new CommonClass(); // 现在就能通过实例访问itemData了 foreach (string platform in commonObj.itemData) { Console.WriteLine(platform); } } }
这种方式适合每个实例可能需要不同数据的场景,当然你的列表是固定初始化的,用这个方法完全没问题。
方法2:把itemData改成静态成员(全局共享)
如果这个列表是全局通用的,不需要每个CommonClass实例都存一份,那可以把它改成静态成员,这样不用创建实例就能直接访问:
先修改你的CommonClass代码:
using System; using System.Collections.Generic; namespace NewParkingApp { public class CommonClass { // 加上static关键字,变成静态成员 public static List<string> itemData = new List<string>() { "Android", "IOS", "Windows Phone", "Xamarin-IOS", "Xamarin-Form", "Xamarin_Android" }; } }
然后在另一个类里直接访问:
using NewParkingApp; public class AnotherClass { public void GetItemData() { // 直接通过类名访问静态成员 foreach (string platform in CommonClass.itemData) { Console.WriteLine(platform); } } }
这种方式适合全局共享的配置类、常量类之类的场景,用起来更方便。
方法3:用属性封装(更规范的写法)
虽然你是新手,但可以提前了解一下C#的封装思想——把字段私有化,通过公共属性暴露,这样能更好地控制外部对数据的访问权限:
修改CommonClass:
using System; using System.Collections.Generic; namespace NewParkingApp { public class CommonClass { // 私有字段,外部不能直接访问 private List<string> _itemData = new List<string>() { "Android", "IOS", "Windows Phone", "Xamarin-IOS", "Xamarin-Form", "Xamarin_Android" }; // 公共属性,外部通过这个属性访问 public List<string> ItemData { get { return _itemData; } // 如果不想让外部修改这个列表,可以删掉set set { _itemData = value; } } } }
访问方式和方法1一样,先创建实例,再通过commonObj.ItemData访问。这种写法更安全,比如去掉set的话,外部只能读取列表,不能直接替换整个列表,避免误操作。
刚学的话可以先从方法1或方法2开始试,慢慢理解实例和静态成员的区别就好啦!
内容的提问来源于stack exchange,提问作者Josh Moorcroft-Jones
相关产品推荐
相关产品推荐

