C# 取出ArrayList 中添加的数据模型

本文探讨了C/S架构下使用OOP思想进行数据访问层的实现方式,通过具体的代码示例展示了如何从文件中读取数据并转换为业务模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中一般会用到三层架构,为的是项目的耦合度。现在我在开发一个DTS系统中也碰到了,因为项目是别人做的,监控系统产生的温度数据都保存在指定格式的数据文件中,而完全脱离了数据库。DataModule,DataAccess,DataCollection 分别存放数据模型对象,访问数据类,数据集合。

很久没有做C/S开发,OOP思想已经模糊不清了,所以记录一下,以备不时之需。

 

deviceInfoDA = new DeviceInFoDataAccess();

ArrayList arrList = deviceInfoDA.GetAllDeviceInfo();//返回一个ArrayList集合

DeviceInFoDataModule deviceInFoDM = arrList[0] as DeviceInFoDataModule; //取出集合索引0的数据对象 转换为DeviceInFoDataModule 类型。而这个DataModule类型正是我所要用的。

Public ArrayList GetAllDeviceInfo()
{
  ArrayList list = ReadAllRecord();//得到集合记录

 if(list != null)

  {

     ArrayList retList = new ArrayList();

    for( int i=0 ;i< list.Count; i++)

     {

        //转换成DataModule

        DeviceInfoDataModule deviceInfoDM = new DeviceInfoDataModule ();

        deviceInfoDM.Index = i+1;

        if(!deviceInfoDM.SetDataFormString(list[i].ToString()))

        {

         break;

         }

         else

        {

            retList.Add(deviceInfoDM );//将数据模型添加到ArrayList

         }

     }

    
      return retList; 

  }

     return null;

  }

 

### 将对象转换为集合的方法 在编程中,将单个对象或一组对象转换为集合是一个常见的需求。具体实现方式取决于所使用的编程语言以及目标集合的类型。 #### C# 中的对象转集合 在 C# 中,可以通过多种方式将对象存储到集合中。以下是几种常见的方式: 1. **使用 `List<T>`** 如果需要动态调整大小并支持索引访问,则可以使用泛型列表 `List<T>` 来保存对象实例。 ```csharp var obj = new MyClass(); List<MyClass> list = new List<MyClass>(); list.Add(obj); ``` 2. **使用 `ArrayList` (非泛型)** 对于不指定类型的集合,可以选择使用 `ArrayList` 类来保存任意类型的对象。需要注意的是,在取出元素时通常需要显式地进行类型转换[^2]。 ```csharp var arrayList = new ArrayList(); var obj = new MyClass(); arrayList.Add(obj); // 取出元素时需强制转换回原类型 MyClass myObj = (MyClass)arrayList[0]; ``` 3. **通过 LINQ 方法** 借助 Language Integrated Query (LINQ),可以从其他数据源快速创建集合。例如,假设有一个数组或者枚举器形式的数据,可以直接调用扩展方法 `.ToList()` 或者 `.ToArray()` 完成转换操作。 ```csharp string[] namesArray = { "Alice", "Bob", "Charlie" }; List<string> namesList = namesArray.ToList(); // 使用 ToList() 创建 List 集合 ``` 4. **自定义类实现 IEnumerable 接口** 当希望某个特定类能够被当作可迭代序列对待时,可以让该类继承 `IEnumerable` 并提供自己的 GetEnumerator 实现逻辑。这样做的好处是可以让外部代码像处理标准集合那样轻松遍历此类内部维护的状态信息。 下面展示了一个简单的例子: ```csharp public class MyCollection : IEnumerable<int> { private readonly int[] _items; public MyCollection(int[] items) { this._items = items; } IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)_items).GetEnumerator(); } public IEnumerator<int> GetEnumerator() { return (_items as IEnumerable<int>).GetEnumerator(); } } static void Main(string[] args) { var collection = new MyCollection(new []{1, 2, 3}); foreach(var item in collection){ Console.WriteLine(item); } } ``` #### 数据结构的概念补充说明 回到最初提到的数据结构概念上来看,“数据结构”指的是计算机科学领域里用来组织、管理和加工大量复杂数据的一种抽象模型[^1]。不同的数据结构适用于解决不同种类的实际问题;比如当频繁涉及随机存取场景下优先考虑数组(Array),而面对连续插入删除动作较多的情况下则更适合采用链表(Linked Lists)等等。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值