同一文件中如何从Program主类向testing类传递List<string>集合?
这问题其实很常见,咱们有好几种简单的方式实现List的传递,我给你列几个常用的方案:
方案1:通过构造函数传递
创建testing实例的时候直接把List传进去,在构造函数里完成赋值,这是最常用的初始化方式:
class Program { static void Main(string[] args) { List<string> list = new List<string>(); list.Add("Test1"); // 创建实例时直接传入目标List testing client = new testing(list); } } public class testing { List<string> newList = new List<string>(); // 定义接收List的构造函数 public testing(List<string> inputList) { // 如果你不想两个List共享同一块内存(避免一方修改影响另一方),用AddRange newList.AddRange(inputList); // 要是允许共享集合,直接赋值也行:newList = inputList; } }
方案2:通过公共属性赋值
给testing类加一个可访问的属性,在实例化后直接赋值,适合需要延迟传递或者后续修改的场景:
class Program { static void Main(string[] args) { List<string> list = new List<string>(); list.Add("Test1"); testing client = new testing(); // 直接给公共属性赋值 client.NewList = list; // 同样,想独立集合的话用AddRange:client.NewList.AddRange(list); } } public class testing { // 定义公共属性,初始化空List public List<string> NewList { get; set; } = new List<string>(); }
方案3:通过方法传递
给testing类写一个专门的方法来接收List,适合需要在传递前做额外处理(比如清空原有数据、验证输入)的情况:
class Program { static void Main(string[] args) { List<string> list = new List<string>(); list.Add("Test1"); testing client = new testing(); // 调用方法传入List client.LoadList(list); } } public class testing { List<string> newList = new List<string>(); public void LoadList(List<string> inputList) { newList.Clear(); // 清空原有内容(可选操作) newList.AddRange(inputList); } }
小提醒:如果是多线程场景,要注意集合的线程安全问题,单线程环境用上面的方案就完全够用啦。
内容的提问来源于stack exchange,提问作者user7374935
相关产品推荐
相关产品推荐

