You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在VB.Net中如何获取支持多变量类型的可编辑集合

满足需求的集合方案

根据你的需求,推荐两种适配的集合方案,对应你可能的两种使用场景:

场景1:集合存储不同类型的单个值,需按名称访问修改

适合你需求4中类似FirstString/SecondString作为元素名称的场景,推荐使用**Dictionary<string, object>**,完全满足所有需求:

  • 支持多类型:值类型为object,可直接存储string、int、byte等任意类型
  • 增删元素:自带Add()、Remove()方法,示例:
    var collection = new Dictionary<string, object>();
    collection.Add("FirstString", "XY");
    collection.Add("SecondInt", 123);
    collection.Remove("SecondInt");
    
  • 搜索元素:可遍历或用ContainsValue()判断,对应你的示例代码:
    foreach (var item in collection.Values)
    {
        if (collection.ContainsValue(xy)) // xy为要搜索的目标值
        {
            // do something
        }
    }
    
  • 编辑元素:通过键名直接访问修改,对应你的示例逻辑:
    if ((string)collection["FirstString"] == "XY")
    {
        collection["SecondString"] = "AB";
    }
    
    注意:访问时需做类型转换,避免类型错误,也可以用TryGetValue()安全访问。

场景2:集合存储带多属性的自定义对象,需修改对象属性

如果你的需求4是指集合中的元素本身包含多个不同类型的属性,推荐自定义类+List<自定义类>,结合LINQ实现搜索:

  1. 定义包含所需属性的类:
    public class MyElement
    {
        public string FirstString { get; set; }
        public string SecondString { get; set; }
        public int IntValue { get; set; }
        public byte ByteValue { get; set; }
        // 按需添加其他类型属性
    }
    
  2. 使用List<MyElement>实现所有需求:
    • 增删元素:
      var collection = new List<MyElement>();
      collection.Add(new MyElement { FirstString = "XY", SecondString = "OldValue" });
      collection.RemoveAt(0); // 按索引移除,或按对象移除
      
    • 搜索元素:用LINQ实现(需引用System.Linq):
      foreach (var elem in collection)
      {
          if (collection.Any(e => e.FirstString == "XY"))
          {
              // do something
          }
      }
      
    • 编辑元素:直接访问对象属性修改,对应你的示例逻辑:
      foreach (var elem in collection)
      {
          if (elem.FirstString == "XY")
          {
              elem.SecondString = "AB";
          }
      }
      // 或按索引直接修改
      if (collection[0].FirstString == "XY")
      {
          collection[0].SecondString = "AB";
      }
      

为什么之前的尝试没满足需求?

  • List(Of T):如果用List(Of Object)可以存多类型,但无法按名称访问元素;如果用强类型泛型,只能存单一类型,不符合需求1。
  • Hashtable:非泛型集合,类型不安全,需频繁装箱拆箱,不如Dictionary<string, object>易用。
  • 自定义类:如果仅定义类但没结合List和LINQ,会缺少便捷的搜索、遍历能力。

内容的提问来源于stack exchange,提问作者user1377723

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:35:28